28. Oktober 201014 j 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...
28. Oktober 201014 j Zeig mal das fertige sArgument. Funktioniert dein Programm, wenn du es damit in der Konsole aufrufst?
28. Oktober 201014 j 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
28. Oktober 201014 j 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 201014 j von diditwithook
28. Oktober 201014 j 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, ...
28. Oktober 201014 j 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.
28. Oktober 201014 j 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 201014 j von diditwithook
28. Oktober 201014 j 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.
28. Oktober 201014 j 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 201014 j von diditwithook
28. Oktober 201014 j 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?
28. Oktober 201014 j 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
28. Oktober 201014 j 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?
28. Oktober 201014 j 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
28. Oktober 201014 j Ich bitte dich jetzt zum vierten und letzten Mal darum: Ruf zum Test bitte programm.exe mit absolutem Pfad auf.
29. Oktober 201014 j System.Diagnostics.Process.Start("C:\\projects\\adresshexler\\adrhexler\\adrhexler7\\bin\\Debug\\adrhexler7.exe", sArguments); funktioniert ganz normal, könntest du mir erklären warum?
29. Oktober 201014 j :/ sagte ja das dies 100% nicht so ist, najo hab nun noch immer keinen "pfad" sondern einen pfad oder einen pf ad :/
29. Oktober 201014 j 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.
29. Oktober 201014 j 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
29. Oktober 201014 j 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?
29. Oktober 201014 j 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!
29. Oktober 201014 j 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...
29. Oktober 201014 j 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.
29. Oktober 201014 j ? 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?
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.