none
Programm Pfad Fehler RRS feed

  • Frage

  • Hallo,

    Ich wollte ein programm mit einem button starten:

    string Pfad1 = "Test";
    
    private void button1_Click(object sender, EventArgs e)
            {
                Process.Start("C:\Ordner"+Pfad1+".exe");
            }

    dann gab es aber diesen Fehler:

    Nicht erkannte Escapesequenz.    C:\Users\P4ntheron\Documents\Visual Studio 2010\Projects\Starter v1.0\Starter v1.0\Form1.cs    32    31    Starter v1.0

    Danke schon mal im vorraus :D


    • Bearbeitet P4ntheron Sonntag, 24. Februar 2013 17:15
    Sonntag, 24. Februar 2013 17:12

Antworten

  • Hallo,

    das liegt an dem \O in deinem Pfad. C# interpretiert einige Zeichen vor denen ein Backslash steht als ein besonderes Zeichen, Beispielsweise \n für einen Zeilenumbruch und \t für einen Tabulator. Abhilfe schafft da entweder den Backslash zu verdoppeln, somit hebt sich die Wirkung auf:

     Process.Start("C:\\Ordner"+Pfad1+".exe");

    Oder ein @ vor den Teilstring zu setzen:

     Process.Start(@"C:\Ordner"+Pfad1+".exe");

    Damit werden alle Escapesequenzen aufgehoben.

    Mehr zu Escapesequenzen: http://msdn.microsoft.com/de-de/library/h21280bw.aspx


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    • Als Antwort markiert P4ntheron Sonntag, 24. Februar 2013 17:50
    Sonntag, 24. Februar 2013 17:45
    Moderator

Alle Antworten

  • Hallo,

    der Backslash "\" muss in C# verdoppelt werden oder die Zeichenkette mit einem Klammeraffen ("@") maskiert werden, siehe string (C#-Referenz),

    Im übrigen empfiehlt es sich Pfade generell mit Path.Combine zusammenzusetzen:

    string pfad = System.IO.Path.Combine(@"C:\Ordner", Pfad1 + ".exe");

    Gruß Elmar

    Sonntag, 24. Februar 2013 17:40
    Beantworter
  • Hallo,

    das liegt an dem \O in deinem Pfad. C# interpretiert einige Zeichen vor denen ein Backslash steht als ein besonderes Zeichen, Beispielsweise \n für einen Zeilenumbruch und \t für einen Tabulator. Abhilfe schafft da entweder den Backslash zu verdoppeln, somit hebt sich die Wirkung auf:

     Process.Start("C:\\Ordner"+Pfad1+".exe");

    Oder ein @ vor den Teilstring zu setzen:

     Process.Start(@"C:\Ordner"+Pfad1+".exe");

    Damit werden alle Escapesequenzen aufgehoben.

    Mehr zu Escapesequenzen: http://msdn.microsoft.com/de-de/library/h21280bw.aspx


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    • Als Antwort markiert P4ntheron Sonntag, 24. Februar 2013 17:50
    Sonntag, 24. Februar 2013 17:45
    Moderator
  • Hallo,

    danke das hat mir sehr geholfen

    Gruß Pantheron

    Sonntag, 24. Februar 2013 17:51