Fehler CS1010 bei strpPath += '\dbSpiele.mdf\';

Hallo,
ich habe eine Klasse geschrieben, die mir den Pfad der Anwendung zurück gibt. An den zurück gegebenen Pfad möchte ich via
strpPath += „\dbSpiele.mdf“; (stpPath ist ein string)
den Namen der Datenbank anhängen.

Wenn ich nun Kompeliere bekomme ich den Fehler „CS1010: Zeilenumbruch innerhalb einer Konstanten“. Was mache ich falsch? Kennt jemand ne Lösung?

Ist es bei C# nicht so dass Test innerhalb von Anführungszeichen nicht interpretiert wird? Kenne sowas von VB6, da klappt das.

Danke

Hallo!
Hach ja, die VB’ler… :wink:

Du hast es ja schon fast richtig gemacht, aber fälschlicherweise das schließende Anführungszeichen auch per vorangestelltem Backslash entwertet.
Wenn Du also strpPath += „\dbSpiele.mdf“; schreibst, geht’s.
Alternativ auch: strpPath += @"\dbSpiele.mdf";.
Und die Arbeit mit der Klasse, die den Pfad der Anwendung zurückgibt, hättest Du Dir auch schenken können: Application.ExecutablePath liefert genau das.

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Gut, das geht jetzt,aber der ConnectionString, den ich darauf zusammensetzen muß klappt immernoch nicht.

der eigentliche Hardcodierte String lautete String heißt jetzt:
_Conn = „Data Source=“.\SQLEXPRESS";AttachDbFilename=„C:\“;
Conn += „Users\Sven\Documents\Visual Studio 2005\Projects\“;
Conn += „Aufgabe1-Spieleverwaltung\dbSpiele.mdf“;Integrated
Security=True;";
Conn += „User Instance=true“;

der generierte:
strConn= „Data Source=“.\SQLEXPRESS"; AttachDbFilename=" + strpPath + " ; Integrated Security=True ; User Instance=True";

wenn ich jetzt mit Application.ExecutablePath arbeite sind im String nur / statt //. Über Replace kann ich das nicht ändern ohne wieder den Fehler zu bekommen.

Ich habe mir mal beide Strings nach dem Kompilieren angesehen und mitr ist aufgefallen,dass bei dem hardcodierten String der Pfad in " steht, bei dem generierten nicht. Wie muß ich den Pfad ändern um den Datenbankpfad auch in " zu bekommen?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]_

Hallo,
ich habe eine Klasse geschrieben, die mir den Pfad der
Anwendung zurück gibt. An den zurück gegebenen Pfad möchte ich
via
strpPath += „\dbSpiele.mdf“; (stpPath ist ein
string)
den Namen der Datenbank anhängen.

Wenn ich nun Kompeliere bekomme ich den Fehler „CS1010:
Zeilenumbruch innerhalb einer Konstanten“
. Was mache ich
falsch? Kennt jemand ne Lösung?

Ist es bei C# nicht so dass Test innerhalb von
Anführungszeichen nicht interpretiert wird? Kenne sowas von
VB6, da klappt das.

Danke

Hallo!
Hach ja, die VB’ler… :wink:

Du hast es ja schon fast richtig gemacht, aber
fälschlicherweise das schließende Anführungszeichen
auch per vorangestelltem Backslash entwertet.
Wenn Du also strpPath += „\dbSpiele.mdf“; schreibst,
geht’s.
Alternativ auch: strpPath += @"\dbSpiele.mdf";.
Und die Arbeit mit der Klasse, die den Pfad der Anwendung
zurückgibt, hättest Du Dir auch schenken können:
Application.ExecutablePath liefert genau das.

Gruß,
Martin

Gut, das geht jetzt,aber der ConnectionString, den ich darauf
zusammensetzen muß klappt immernoch nicht.

der eigentliche Hardcodierte String lautete String heißt
jetzt:
_Conn = „Data
Source=“.\SQLEXPRESS";AttachDbFilename=„C:\“;
Conn += „Users\Sven\Documents\Visual Studio
2005\Projects\“;
Conn +=
„Aufgabe1-Spieleverwaltung\dbSpiele.mdf“;Integrated
Security=True;";
Conn += „User Instance=true“;

der generierte:
strConn= „Data Source=“.\SQLEXPRESS";
AttachDbFilename=" + strpPath + " ; Integrated Security=True
; User Instance=True";

wenn ich jetzt mit Application.ExecutablePath arbeite sind im
String nur / statt //. Über Replace kann ich das nicht ändern
ohne wieder den Fehler zu bekommen.

Ich habe mir mal beide Strings nach dem Kompilieren angesehen
und mitr ist aufgefallen,dass bei dem hardcodierten String der
Pfad in " steht, bei dem generierten nicht. Wie muß ich den
Pfad ändern um den Datenbankpfad auch in " zu bekommen?_

Einfach korrekt die Backslashes zählen. Die Angaben oben können übrigens nicht stimmen. Falls Du tatsächlich nach der DataSource " stehen hast, findest Du im Ergebnis-string garantiert nicht auch wieder ", sondern nur noch ".

Einfacher kannst Du’s Dir noch machen, indem Du Dir mal die Bedeutung von ‚@‘ vor einer String-Konstanten durchliest. Dann brauchst Du nämlich die Backslashes nicht mehr entwerten und tust Dich mit dem Zählen leichter…

Gruß,
Martin

Hallo Martin,
eben das ist es ja. Der Pfad der Datenbank muß in " stehen und das krieg ich nicht hin. wie kann ich das Ergebnis von Application.ExecutablePath so bearbeiten, dass es in " steht im Ergebnisstring, also der String so aussieht wie der hardcodierte. Ersetze „“ durch „\“ geht ja nicht und sonst klappt der ConnectionString nicht dynamisch.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Probier’s einfach mal damit:

string strConn = "Data Source=\".\\SQLEXPRESS\"; AttachDbFilename=\"" + Application.StartupPath + "\\DatabaseFile.mdf\"; Integrated Security=True; User Instance=True";

Du kannst sehen, dass nur dort die Anführungszeichen escaped sind, wo sie auch explizit als Bestandteil des Strings auftauchen sollen, nämlich vor und nach dem Instanznamen und vor und nach dem Datenbankdateinamen.

Gruß,
Martin