bozoo Geschrieben 16. April 2002 Geschrieben 16. April 2002 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? Zitieren
nic_power Geschrieben 16. April 2002 Geschrieben 16. April 2002 Welches Betriebssystem? Unter Linux/Unix solltest Du kein Problem mit langen Commandlines haben. Nic Zitieren
bozoo Geschrieben 17. April 2002 Autor Geschrieben 17. April 2002 NT4.0 ...und es muss auch auf einer ms-plattform laufen...also leider (u)nix Zitieren
bozoo Geschrieben 18. April 2002 Autor Geschrieben 18. April 2002 hallo? hat sonst niemand mehr einen tip? Zitieren
Klotzkopp Geschrieben 18. April 2002 Geschrieben 18. April 2002 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? Zitieren
Screwed Geschrieben 18. April 2002 Geschrieben 18. April 2002 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. Zitieren
bozoo Geschrieben 18. April 2002 Autor Geschrieben 18. April 2002 Es läuft unter NT4.0 Die zum Parsen übergebenen Dateien sind im Schnitt ca. 70kb gross... ...und umbenennen kann ich die files leider auch nicht... Zitieren
Klotzkopp Geschrieben 18. April 2002 Geschrieben 18. April 2002 Wie groß die Dateien sind, ist ziemlich egal. Wie lang sind die Dateinamen, zusammengenommen? Zitieren
bozoo Geschrieben 19. April 2002 Autor Geschrieben 19. April 2002 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. Zitieren
Klotzkopp Geschrieben 19. April 2002 Geschrieben 19. April 2002 Also reden wir von vielleicht 70 Zeichen? Das ist auf gar keinen Fall ein Problem mit der Größe des Kommandozeilenpuffers. Wie verarbeitest Du die Kommandozeilenparameter? Zitieren
bozoo Geschrieben 19. April 2002 Autor Geschrieben 19. April 2002 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... Zitieren
nic_power Geschrieben 19. April 2002 Geschrieben 19. April 2002 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 Zitieren
EvilInside Geschrieben 19. April 2002 Geschrieben 19. April 2002 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 Zitieren
bozoo Geschrieben 19. April 2002 Autor Geschrieben 19. April 2002 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... Zitieren
Klotzkopp Geschrieben 19. April 2002 Geschrieben 19. April 2002 Tritt der Fehler im Programm auf, oder bereits bei der Drag&Drop-Operation? Bei mir verweigert XP Prof. mit einer Zugriffs-Fehlermeldung, wenn ich mehr als 64 Dateien gleichzeitig auf eine .EXE ziehe. Zitieren
bozoo Geschrieben 19. April 2002 Autor Geschrieben 19. April 2002 ja genau, bereits beim Drag'n'Drop! Allerdings wär's schön, ich schon über 20 Dateien 30 Dateien hinauskomme Zitieren
nic_power Geschrieben 19. April 2002 Geschrieben 19. April 2002 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 Zitieren
bozoo Geschrieben 21. April 2002 Autor Geschrieben 21. April 2002 Ja mache ich. Und selbst wenn: Es sind nur ein paar Textfiles...keine grose Sache eigentlich. Ein File ist vielleicht um die 40-70kb gross.... Zitieren
nic_power Geschrieben 21. April 2002 Geschrieben 21. April 2002 Wenn es nicht zu viel ist, koenntest Du deinen Code ja hier mal posten. Nic Zitieren
Empfohlene Beiträge
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.