diditwithook Geschrieben 25. Oktober 2010 Geschrieben 25. Oktober 2010 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? Zitieren
2K1.INC Geschrieben 25. Oktober 2010 Geschrieben 25. Oktober 2010 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.... Zitieren
diditwithook Geschrieben 25. Oktober 2010 Autor Geschrieben 25. Oktober 2010 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 Zitieren
diditwithook Geschrieben 25. Oktober 2010 Autor Geschrieben 25. Oktober 2010 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? Zitieren
2K1.INC Geschrieben 25. Oktober 2010 Geschrieben 25. Oktober 2010 schreib mal detailliert was du genau machen willst und wo dein problem ist... ich check des da unten iwie ned ganz Zitieren
diditwithook Geschrieben 25. Oktober 2010 Autor Geschrieben 25. Oktober 2010 (bearbeitet) 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 2010 von diditwithook Zitieren
Guybrush Threepwood Geschrieben 25. Oktober 2010 Geschrieben 25. Oktober 2010 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... Zitieren
diditwithook Geschrieben 25. Oktober 2010 Autor Geschrieben 25. Oktober 2010 ja hab ich probiert, prozess konnte datei nicht finden Zitieren
diditwithook Geschrieben 25. Oktober 2010 Autor Geschrieben 25. Oktober 2010 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 Zitieren
Guybrush Threepwood Geschrieben 25. Oktober 2010 Geschrieben 25. Oktober 2010 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. Zitieren
2K1.INC Geschrieben 26. Oktober 2010 Geschrieben 26. Oktober 2010 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... Zitieren
Guybrush Threepwood Geschrieben 26. Oktober 2010 Geschrieben 26. Oktober 2010 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. Zitieren
2K1.INC Geschrieben 26. Oktober 2010 Geschrieben 26. Oktober 2010 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 Zitieren
Guybrush Threepwood Geschrieben 26. Oktober 2010 Geschrieben 26. Oktober 2010 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. Zitieren
diditwithook Geschrieben 27. Oktober 2010 Autor Geschrieben 27. Oktober 2010 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 " :/ Zitieren
Guybrush Threepwood Geschrieben 27. Oktober 2010 Geschrieben 27. Oktober 2010 Solange du deinen Code nicht zeigst bleibt das ein Ratespiel Zitieren
Gateway_man Geschrieben 27. Oktober 2010 Geschrieben 27. Oktober 2010 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 Zitieren
diditwithook Geschrieben 27. Oktober 2010 Autor Geschrieben 27. Oktober 2010 (bearbeitet) 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 2010 von diditwithook Zitieren
Gateway_man Geschrieben 27. Oktober 2010 Geschrieben 27. Oktober 2010 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 Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 selbes ergebnis ... string test = (Char)34 + textBox2.Text + (Char)34; --> \"C:\\Dokumente und Einstellungen\\User\\Desktop\\output.csv\" Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 \"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. Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 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 :/ Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 Und die Anführungszeichen packst du nur um sInputPfad? Oder auch um sOutputPfad? Zeig mal das fertige sArgument. Zitieren
diditwithook Geschrieben 28. Oktober 2010 Autor Geschrieben 28. Oktober 2010 string sInputPfad = (Char)34 + textBox1.Text + (Char)34; string sOutputPfad = (Char)34 + textBox2.Text + (Char)34; string sArgument = sInputPfad + " " + sOutputPfad; natürlich Zitieren
Klotzkopp Geschrieben 28. Oktober 2010 Geschrieben 28. Oktober 2010 Zeig mal das fertige sArgument. Am besten nicht im Debugger, sondern schreib es in eine Textdatei und kopier es hier rein. 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.