Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi,

ich habe eine Funktion, die "normal" mit argc / argv Parameter übergeben bekommt:

int main(int argc, char *argv[])

In meinem Fall übergebe ich Textdateien als Parameter, die dann "geparsed" werden. Leider kann ich immer nur so 5-6 Dateien übergeben, weil sonst 'ne Fehlermeldung kommt:

"Zugriff auf Pfad / Datei wurde verweigert"

Ich vermute mal, dass es was mit dem Buffer zu tun hat. Wie kann ich den vergrössern?

Wer hat auch schon mal Erfahrungen mit sowas gemacht?

Geschrieben

Bitte kein Thread-pushing, siehe Boardregeln.

Was Dein Problem angeht, auch unter Windows sollte es eigentlich kein Problem mit langen Kommandozeilen geben. Unter welchem Betriebssystem läuft das Programm, und um wieviele Zeichen geht es etwa?

Geschrieben

sonst halt einfach die dateiname so benennnen, daß due sie zusammensetzen kannst.. z.b. wenn du dateien hast, die test-0001 bis test-0010 hast, dann übergibst du einfach an dien programm den namen test und den startwert und den endwert, bastelst darüber ne schleife und setzt dann halt den endgültigen dateinamen zusammen.:D

Geschrieben

Ach so!

Ein Dateiname ist etwa 4-9 Zeichen lang.

Ich kann ca. 6-7 Dateien an mein Programm übergeben.

Jemand hatt mir noch den Tip gegeben, dass ich sowas auch bei den Compileroptionen angeben kann...Hab's aber nicht gefunden!...

ich hab' versucht auch argv[] einfach mal sehr gross zu deklarieren:

char argv[2000]="";

Hat aber auch nichts genützt.

Geschrieben

in *argv[] habe ich ja die übergebenen Dateien stehen, die ich mit DragDrop auf meine exe ziehe.

Ich ermittle dann erst den Pfad aus dem die Dateien stamme, öffne diese dann und lese den ASCII-Inhalt zeilenweise ein...

Geschrieben

Bist Du Dir sicher, dass das Problem bei der Uebergabe der Argumente zu suchen ist? Um das auszuschliessen, kannst Du Dir probehalber ja mal die uebergebene Dateinamen ausgeben lassen, bevor Du sie weiterverarbeitets:

while (*argv)

printf("%s\n", *argv++);

Wenn dabei alle Argumente ausgegeben werden, ist der Fehler an anderer Stelle zu suchen. Was machst Du denn mit den Dateien innerhalb Deines Programms?

Nic

Geschrieben
Original geschrieben von pinkpanther

in *argv[] habe ich ja die übergebenen Dateien stehen, die ich mit DragDrop auf meine exe ziehe.

Ich ermittle dann erst den Pfad aus dem die Dateien stamme, öffne diese dann und lese den ASCII-Inhalt zeilenweise ein...

Wenn Du die Dateien per Drag&Drop übergibst, dann übergibt er aber auch den kompletten Pfad - das kann dann mitunter schon ziemlich lang werden.

Könnte es evtl. auch mit einem der Dateinamen zusammenhängen (z.B. Sonderzeichen im Dateinamen o.ä.) ?

Ansonsten schliesse ich mich nic_power an:

einfach mal alle übergebenen Dateinamen ausgeben lassen. Wenn es da paßt, dann liegt der Fehler woanders.

Evil

Geschrieben

ja, stimmt der pfad ist natürlich länger ... hab' ich gar nicht dran gedacht...

die dateinamen enthalten aber keine sonderzeichen...

ausserdem habe ich argv[] als argv[2000] vordefiniert, um nicht dynamisch und mglicherweise zu klein sein zu müssen.

er gibt mir auch alle dateinamen ordentlich aus und macht auch sonst mit den dateien alles was ich will.

was ich mache:

Ich lese die dateien zeilenweise ein und suche nach bestimmten schlüsselwörtern. wenn in einer datei ein wort enthalten ist, schreibt er die zeile in ein neues file, das mein programm anlegt.

also im prinzip nichts exotisches...

Geschrieben

Wenn die Dateinamen korrekt uebergeben und ausgegeben werden (was ja der Fall zu sein scheint), muss Dein Problem irgendwo anders liegen. Schliesst Du die Dateien auch wieder, nachdem Du sie geoeffnet hast (es koennten zu viele Dateien geoffnet sein).

Nic

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...