diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 gebe ich sArgument ein und lass es mir mit einer messagebox anzeigen bekomme ich das richtige ergebnis, doch übergebe ich dies so dem prozess als argument interpretiert er diesen falsch... "pfad" "pfad" das würde stimmen... Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 Zeig mal das fertige sArgument. Funktioniert dein Programm, wenn du es damit in der Konsole aufrufst? Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 rufe ich das programm mit programm.exe "C:\Dokumente und Einstellungen\User\Desktop\input.csv" "C:\Dokumente und Einstellungen\User\Desktop\output.csv" in der cmd auf funktioniert es tadellos Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 (bearbeitet) fertiges sArgument mit einer Messagebox ausgegeben: "C:\Dokumente und Einstellungen\User\Desktop\input.csv" "C:\Dokumente und Einstellungen\User\Desktop\output.csv" im debugger unter locals: sArgument: "\"C:\\Dokumente und Einstellungen\\User\\Desktop\\input.csv\" \"C:\\Dokumente und Einstellungen\\User\\Desktop\\output.csv\"" (äusersten ") bei jeder variable vorhanden... Bearbeitet 28. Oktober 2010 von diditwithook Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 Und was passiert genau, wenn du das ausführst? Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 unhandled exception ^^ programm.exe hatte bis ich dieses problem gelöst habe selber ausgeführt, da ich den normale usern kein konsolenprogramm aufdrücken wollte dachte ich mir stülpe ich schnell eine kleine win form drüber, ... Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 unhandled exception ^^Dann häng dich doch bitte mit dem Debugger dran, und sieh nach, was genau passiert. Mit "unhandled exception" allein kann man nichts anfangen, ob mit oder ohne ^^. Und bist du wirklich sicher, dass das richtige programm.exe gestartet wird, und nicht eine alte Version, die noch irgendwo rumliegt? Gib beim Starten bitte mal einen absoluten Pfad zur Exe an. Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 (bearbeitet) soweit ich jetzt bin DENKE ich mir das bei string sArguments = "\"" + sInputPfad + "\""; System.Diagnostics.Process.Start("programm.exe", sArguments); sArgument nicht richtig interpretiert wird, wenn ich "\"" bei sInputpfad hinzufüge bekomme ich kein fehler wenn ich einen pfad ohne leerzeichen habe, nur bei einem pfad mit leerzeichen, sprich "\"" sollte funktionieren, wobei dann mein problem ist wie schaffe ich es einen pfad mit leerzeichen zu übergeben +grml+ Bearbeitet 28. Oktober 2010 von diditwithook Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 soweit ich jetzt bin DENKE ich mir das bei [...] sArgument nicht richtig interpretiert wirdDenken ist ja schön und gut, wie wäre es denn, wenn du es prüfst? Gibt es einen Grund, warum du meine Fragen nicht beantwortest und nicht tust, worum ich dich gebeten habe? Denn dann kann ich mir das auch sparen. Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 (bearbeitet) ich versuche deine fragen so gut wie möglich zu beantworten, ich kann nicht mehr wie programm.exe mit diesen parametern zu starten, und sehe dann das wenn ich "pfad mit leerzeichen" als parameter übergebe es funktioniert, ohne " nicht - das ist mir klar da er die parameter anhand der leerzeichen trennt :/ übergebe ich unter properties die command line arguments "pfad mit leerzeichen" funktioniert es tadellos, doch speichere ich den pfad mit string str = "\"" + strpfadmitleerzeichen + "\""; ab funkioniert es nicht, bin dann aber wie schon erkläft drauf gekommen dass dies so trotzdem funktioniert wenn ich so einen pfad ohne leerzeichen abspeichere, SOLLTE doch das selbe sein ... Bearbeitet 28. Oktober 2010 von diditwithook Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 Ich hatte dich gebeten, dich mit dem Debugger an programm.exe ranzuhängen, damit wir ein wenig mehr Informationen als "unhandled exception ^^" bekommen. Was ist dabei herausgekommen? Ich hatte dich auch gebeten, beim Starten den absoluten Pfad zu programm.exe anzugeben. Was ist dabei herausgekommen? Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 Ich hatte dich gebeten, dich mit dem Debugger an programm.exe ranzuhängen, damit wir ein wenig mehr Informationen als "unhandled exception ^^" bekommen. Was ist dabei herausgekommen? starte ich programm.exe über die winform wo ich die argumente wie folgt abspeichere funktioniert es nicht: string sInputPfad = textBox1.Text; string sOutputPfad = textBox2.Text; string sArguments = sInputPfad + " " + sOutputPfad; System.Diagnostics.Process.Start("programm.exe", sArguments); funktioniert auch nicht wenn ich die pfad auf eine der folgenden arten abspeichere: string sInputPfad = char.ConvertFromUtf32(34) + textBox1.Text + char.ConvertFromUtf32(34); oder string sInputPfad = "\"" + textBox1.Text + "\""; oder string sInputPfad = (Char)34 + textBox1.Text + (Char)34; habe mir dann die pfade ausgeben lassen und programm.exe mit diesen strings gedebuggt (versuch 1-3). problem ist ja wenn ich mir nach string sInputPfad = "\"" + textBox1.Text + "\""; den pfad ausgebe bekomme ich "pfad mit leerzeichen", habe es auch mit den pfaden die ich aus den locals in diesem moment rauskopiert habe versucht(im win form programm), aufwerfen tut es mich dann bei StreamReader StreamReader = new StreamReader(sPfad); im programm.exe wobei sPfad dein inputpfad darstellt. Fehlermeldung: Datei sPfad konnte nicht gefunden werden. versuch1: im debugger die command line arguments: "C:\Dokumente und Einstellungen\User\Desktop\input.csv" "C:\Dokumente und Einstellungen\User\Desktop\output.csv" -> funktioniert wie gewünscht versuch2: im debugger die command line arguments: C:\Dokumente und Einstellungen\User\Desktop\input.csv C:\Dokumente und Einstellungen\User\Desktop\output.csv -> funktioniert nicht da er für arg[0] "C:\Dokumente" nimmt, ist mir ja klar versuch3: selbe wie versuch2, ohne " mit einem pfad ohne leerzeichen -> funktioniert auch Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 Deine Experimente bringen nicht viel. Du musst den Fehlerfall debuggen, nicht irgendetwas nachgebautes. Bau in dein Konsolenprogramm am Anfang eine Eingabe von der Konsole oder so etwas ein. Dann starte dein Forms-Programm und lass es dein Konsolenprogramm starten. Wenn dann das Konsolenprogramm auf die Eingabe wartet, häng dich mit dem Debugger dran (Debug -> Attach to Process) und sieh nach, was über die Parameter reingekommen ist. Hast du das mit dem absoluten Pfad versucht? Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 habe dies versucht, das problem ist bei System.Diagnostics.Process.Start("programm.exe", sArguments); bekomme ich schon folgende fehlermeldung: Das System kann die angegebene Date nicht finden, habe vor allem anderen in der main in programm.exe ein readkey eingebaut, zu diesem komme ich nun garnicht um es weiter zu debuggen Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 Ich bitte dich jetzt zum vierten und letzten Mal darum: Ruf zum Test bitte programm.exe mit absolutem Pfad auf. Zitieren
diditwithook Geschrieben 29. Oktober 2010 Autor Geschrieben 29. Oktober 2010 System.Diagnostics.Process.Start("C:\\projects\\adresshexler\\adrhexler\\adrhexler7\\bin\\Debug\\adrhexler7.exe", sArguments); funktioniert ganz normal, könntest du mir erklären warum? Zitieren
Guybrush Threepwood Geschrieben 29. Oktober 2010 Geschrieben 29. Oktober 2010 Weil ohne absoluten Pfad wohl eine andere programm.exe aufgerufen wird Zitieren
diditwithook Geschrieben 29. Oktober 2010 Autor Geschrieben 29. Oktober 2010 :/ sagte ja das dies 100% nicht so ist, najo hab nun noch immer keinen "pfad" sondern einen pfad oder einen pf ad :/ Zitieren
Klotzkopp Geschrieben 29. Oktober 2010 Geschrieben 29. Oktober 2010 System.Diagnostics.Process.Start("C:\\projects\\adresshexler\\adrhexler\\adrhexler7\\bin\\Debug\\adrhexler7.exe", sArguments); funktioniert ganz normal, könntest du mir erklären warum?Wenn du eine ausführbare Datei ohne Pfad starten willst, wird der Inhalt der Umgebungsvariablen PATH benutzt, um diese Datei zu suchen. Obiges Verzeichnis ist da bei dir sicher nicht drin, also klappt das ohne Pfad nur, wenn du das Forms-Programm aus dem Verzeichnis startest, in dem das Konsolenprogramm liegt. Ich möchte übrigens festhalten, dass dein Problem nichts mit Escapen von Anführungszeichen zu tun hat. Für die Zukunft: Beschreib das Problem selbst, nicht das, was du für die Ursache hältst. Zitieren
diditwithook Geschrieben 29. Oktober 2010 Autor Geschrieben 29. Oktober 2010 ich finde dass dies das problem ist? hätte ich im string " könnte ich "pfad" als argument übergeben und hätte kein problem mit spaces in einem pfad Zitieren
Klotzkopp Geschrieben 29. Oktober 2010 Geschrieben 29. Oktober 2010 hätte ich im string " könnte ich "pfad" als argument übergeben und hätte kein problem mit spaces in einem pfadDu hast kein Problem mit Leerzeichen im Pfad. Du hast das Problem, dass deine Forms-Anwendung das Konsolenprogramm nicht findet. Wenn du den Pfad zum Konsolenprogramm explizit angibst, läuft's doch, oder? Zitieren
diditwithook Geschrieben 29. Oktober 2010 Autor Geschrieben 29. Oktober 2010 naja, kommen hier irgendwie garnicht weiter, habe dies nun (imho quick and dirty) folgend gelöst: pfad parsen -> space mit sonderzeichen ersetzt -> im programm.exe die argumente einzeln abgespeichert und sonderzeichen wieder mit spaces ersetzt wie man nun " in einen string bekommt würde mich trotzdem noch interessieren! Zitieren
diditwithook Geschrieben 29. Oktober 2010 Autor Geschrieben 29. Oktober 2010 Du hast kein Problem mit Leerzeichen im Pfad. Du hast das Problem, dass deine Forms-Anwendung das Konsolenprogramm nicht findet. Wenn du den Pfad zum Konsolenprogramm explizit angibst, läuft's doch, oder? nein? dass der pfad des inputfiles (arg[0]) leerzeichen enthält und ich diesen dann nicht so übergeben kann da wenn er über ein leerzeichen stolpert es in 2 argumente trennt... Zitieren
Klotzkopp Geschrieben 29. Oktober 2010 Geschrieben 29. Oktober 2010 wie man nun " in einen string bekommt würde mich trotzdem noch interessieren!Das steht hier im Thread. Mehrfach. Dass das gar nicht dein Problem ist, ist offenbar bei dir immer noch nicht angekommen. Zitieren
diditwithook Geschrieben 29. Oktober 2010 Autor Geschrieben 29. Oktober 2010 ? wenn ich string test = "\"blabla\""; bekomme ich nicht "bla" sondern \"bla\" ---> erste seite stichwort: deferred execution würde ich tatsächlich "bla" bekommen hätte ich dieses problem nicht, wo siehst du denn mein problem, genau? 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.