Veröffentlicht 25. Oktober 201014 j pseudo bsp.: str test = "\"" + textBox1.Text + "\""; value beim debugen: \"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\input.xlsx\" wie bekomme ich nun ein normales doppeltes hochkomma in den string oO?
25. Oktober 201014 j pseudo bsp.: str test = "\"" + textBox1.Text + "\""; value beim debugen: \"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\input.xlsx\" wie bekomme ich nun ein normales doppeltes hochkomma in den string oO? brauchst du wirklich " im Pfad? hmm die anweisung stimmt. Klick auf die kleine Lupe beim debuggn, dann siehst du das da des drin steht was du wolltest. Es ist halt ein problem was oft bei LINQ vorkommt, deferred execution....
25. Oktober 201014 j ja, benötige die ", öffne hier per filedialog ein pfad, und rufe dann ein konsolenprogramm mit verschiedenen parametern auf, einer davon ist das file mit den input daten, wenn ich einfach den pfad mit aufrufe bekomme ich die fehlermeldung c:\dokumente ~... diesen string mit " zu versehen kann doch nicht so schwer sein ^^ :old
25. Oktober 201014 j ansonsten hasst du für mich eine lösung um ein konsolenprogramm zu starten das als parameter einen pfad mit möglichem c:\dokumente~ hat? ohne hochkommas im string?
25. Oktober 201014 j schreib mal detailliert was du genau machen willst und wo dein problem ist... ich check des da unten iwie ned ganz
25. Oktober 201014 j habe eine form mit der ich einen prozess (eine .exe datei) starte (System.Diagnostics.Process prozess = new System.Diagnostics.Process(); - prozess.start(). diese .exe ist ein konsolenprogramm mit verschiedenen parametern, zwei dieser parameter sind pfade, einmal welches file ausgelesen einmal wohin das bearbeitete file gespeichert wird. die pfade trage ich per file.dialog in eine textbox ein und füge per prozess.startinfo.arguments den textbox inhalt als argument hinzu. ist der pfad nun zb.: "c:\Dokumente ~" sprich mit leerzeichen bekomme ich einen fehler, sollte einfach den pfad in doppelte hochkommas packen +grml+ bei dem in hochkommas packen bin ich wie oben schon gesehen kläglich gescheitert ^^ Bearbeitet 25. Oktober 201014 j von diditwithook
25. Oktober 201014 j pseudo bsp.: str test = "\"" + textBox1.Text + "\""; value beim debugen: \"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\input.xlsx\" wie bekomme ich nun ein normales doppeltes hochkomma in den string oO? Hast du es denn überhaupt mal ausprobiert? Denn der Code ist richtig so. Das du das im Debugger auh mit \ Escaped siehst liegt daran das die Quickinfo den String auch mit " am Anfang und Ende darstellt. Wenn du aber auf die Lupe klickst siehst du den "richtigen" Wert ohne das etwas Escaped wird. Ist zumindest im Visual Studio so...
25. Oktober 201014 j Das du das im Debugger auh mit \ Escaped siehst liegt daran das die Quickinfo den String auch mit " am Anfang und Ende darstellt. ich habe den wert als ich ihn hierher kopiert habe schon um " am anfang und ende bereinigt! suche ich mir einen pfad ohne leerzeichen aus funktioniert es
25. Oktober 201014 j Dann hast du irgendwo ein anderes Problem, entweder ist der restliche Code irgendwo falsch oderder Pfad existiert so nicht. Der String ist so aber korrekt escaped.
26. Oktober 201014 j Hast du es denn überhaupt mal ausprobiert? Denn der Code ist richtig so. Das du das im Debugger auh mit \ Escaped siehst liegt daran das die Quickinfo den String auch mit " am Anfang und Ende darstellt. Wenn du aber auf die Lupe klickst siehst du den "richtigen" Wert ohne das etwas Escaped wird. Ist zumindest im Visual Studio so... das sagte ich ihm auch schon normal sollte es kein problem darstellen ob da nun leerzeichen drin sind oder nicht...ich hatte mal so ein problem aber ka woran es lag zu lang her...
26. Oktober 201014 j Doch die Leerzeichen sind ein Problem wenn du es als Parameter übergeben willst weil dann ab jedem Leerzeichen ein neuer Parameter beginnt. Deswegen ja die Anführungszeichen am Anfang und Ende des Strings.
26. Oktober 201014 j Doch die Leerzeichen sind ein Problem wenn du es als Parameter übergeben willst weil dann ab jedem Leerzeichen ein neuer Parameter beginnt. Deswegen ja die Anführungszeichen am Anfang und Ende des Strings. das ich das extra dazu schreiben muss das ich den text in den "" meine wusst ich ja ned dachte es is selbst verständlich weils sonst eh ein fu fehler gebn würd weils kein string parameter wär ohne "" .... VS würd ja den fehler schon melden und das is basic wissn o.O
26. Oktober 201014 j Nein du verstehst das Problem nicht. Wenn du zum Beispiel auf der Kommandozeile ein Programm namens test.exe aufrufen willst welches einen Pfad als Parameter erwartet zum Beispiel c:\neuer ordner\ dann kannst du das nicht einfach so eingeben: test.exe c:\neuer ordner\ Weil du dann 2 Parameter übergeben hättest nämlich c:\neuer und ordner. Damit das ein Parameter ist müssen da Anführungszeichen drum test.exe "c:\neuer ordner\" Genau das Selbe will diditwithook in seinem Programm machen und wie bereits gesagt macht er das so wie oben gepostet richtig. Also hat er noch irgendwo ein anderes Problem.
27. Oktober 201014 j Nein du verstehst das Problem nicht. Wenn du zum Beispiel auf der Kommandozeile ein Programm namens test.exe aufrufen willst welches einen Pfad als Parameter erwartet zum Beispiel c:\neuer ordner\ dann kannst du das nicht einfach so eingeben: Weil du dann 2 Parameter übergeben hättest nämlich c:\neuer und ordner. Damit das ein Parameter ist müssen da Anführungszeichen drum Genau das Selbe will diditwithook in seinem Programm machen und wie bereits gesagt macht er das so wie oben gepostet richtig. Also hat er noch irgendwo ein anderes Problem. du hast mein problem zu 100% erkannt :uli wenn ich einen pfad ohne leerzeichen mit übergebe habe ich dieses problem nicht, wenn ich bei properties -> debug den pfad mit " " als command line argument eintrage funktioniert es auch problemlos, will ich jedoch eben den pfad per filedialog auswählen kriege ich ihn ohne " :/
27. Oktober 201014 j pseudo bsp.: str test = "\"" + textBox1.Text + "\""; value beim debugen: \"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\input.xlsx\" wie bekomme ich nun ein normales doppeltes hochkomma in den string oO? string str = "\\" + Strings.Chr(34) + TextBox1.Text + "\\" + Strings.Chr(34); lg Gateway
27. Oktober 201014 j ca so... string sInputPfad = "\\" + char.ConvertFromUtf32(34) + textBox1.Text + "\\" + char.ConvertFromUtf32(34); ...? ergebnis: \\\"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\office2007serial.txt\\\" hatte ich schon versucht natürlich auch in der form: string sInputPfad =char.ConvertFromUtf32(34) + textBox1.Text + char.ConvertFromUtf32(34); ergebnis: \"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\office2007serial.txt\" selbe wie beim ersten codeschnipsel Bearbeitet 27. Oktober 201014 j von diditwithook
27. Oktober 201014 j ca so... string sInputPfad = "\\" + char.ConvertFromUtf32(34) + textBox1.Text + "\\" + char.ConvertFromUtf32(34); ...? ergebnis: \\\"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\office2007serial.txt\\\" hatte ich schon versucht natürlich auch in der form: string sInputPfad =char.ConvertFromUtf32(34) + textBox1.Text + char.ConvertFromUtf32(34); ergebnis: \"C:\\Dokumente und Einstellungen\\r01c2310\\Desktop\\office2007serial.txt\" selbe wie beim ersten codeschnipsel So ist es ja auch falsch. Der Wert 34 ist nur in der Ascii Codierung das doppelte Hochkomma. Du greifst aber gerade auf die UTF32 Codierung zu. Siehe auch hier. Das dürfte wohl eher das sein was du willst: string str = "Siehe da, das ist dein Zeichen" + (Char)34 + "!" lg Gateway
28. Oktober 201014 j selbes ergebnis ... string test = (Char)34 + textBox2.Text + (Char)34; --> \"C:\\Dokumente und Einstellungen\\User\\Desktop\\output.csv\"
28. Oktober 201014 j \"C:\\Dokumente und Einstellungen\\User\\Desktop\\output.csv\" Es wurde hier schon mehrfach gesagt: Das sollte das richtige Ergebnis sein. Zeig doch mal, was du mit dem String machst.
28. Oktober 201014 j System.Diagnostics.Process prozess = new System.Diagnostics.Process(); prozess.StartInfo.FileName = "programm.exe"; string sArgument = sInputPfad + " " + sOutputPfad; prozess.StartInfo.Arguments = sArgument; prozess.Start(); ohne exception handler etc stürzt das "programm.exe" ab, da dieses min. 2 argumente erwartet... bearbeite ich die inhalte der textboxen nicht und der pfad hat kein leerzeichen funktioniert es :/
28. Oktober 201014 j Und die Anführungszeichen packst du nur um sInputPfad? Oder auch um sOutputPfad? Zeig mal das fertige sArgument.
28. Oktober 201014 j string sInputPfad = (Char)34 + textBox1.Text + (Char)34; string sOutputPfad = (Char)34 + textBox2.Text + (Char)34; string sArgument = sInputPfad + " " + sOutputPfad; natürlich
28. Oktober 201014 j Zeig mal das fertige sArgument. Am besten nicht im Debugger, sondern schreib es in eine Textdatei und kopier es hier rein.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.