CString Pfad
-
Servus,
eigentlich sollte das wunderbar funktionieren.
Woher kommt denn der Inhalt deiner Variable? Von einem Edit? Aus einer Datei? Überprüf mal ob wirklich das richtige in der Variable steht. (Debuggen)
*winke*
Hellsgore
-
Servus!
Danke für deine Antwort!
Aber in datei steht es eientlich richtig drinnen...
Habe jetzt noch folgendes probiert und es hat auch nicht funktioniert:void CBasicappView::OnDone() { // if Channel in Bild Nr. = 1 // Close // else nicht schließen lassen!! CString name = "C:\ordner1\ordner2\datei"; int rv = name.Replace("\\","\\\\"); MessageBox(name); }Die MessageBox gibt den den String name komplett ohne \ aus!

-
ups sorry die kommentare darüber habe ich versehentlich mit genommen!!
einfach nicht beachten haben damit nichts zu tun........
-
wie waere es mit
int rv = name.Replace("\","\\");was ist dagegen einzuwenden? in deinem string sind ja einfache drinn.
zur not mach halt foldendes
- ne schleife von 0 bis stringlaenge
- untersuche jedes zeichen
- ist zeichen ein \ dann schreibe dahinter \ und aktualisiere die laenge.
fertig
in der art wie
for ( int i = 0; i < name.getlenght(); i ++) { if( name.mid(i,1) == "/") { // dahinter halt dann in der i+einten oder i - einten stelle ein weiteres \ einfuegen } }
-
Wenn du einen String IN C++ definierst, musst du zwei \ machen, weil \ ein Escape-Zeichen ist. Das heißt, \ hat eine besondere Bedeutung, zB bei \n = neue Zeile. Wenn du jetzt (im Code!!) einen normalen Backslash schreiben willst, musst du ihn escapen: zB wäre "\n" eine neue Zeile, aber "\\n" EIN Backslash und ein n.
Wenn der User z.B. "C:\foo.txt" eingibt, dann stimmt der Pfad! Würdest du das im Code schreiben wollen, müsstest du "C:\\foo.txt" schreiben, da der Compiler sonst das escape-Zeichen "\f" erkennt!
So ungefähr verstanden?
-
He super danke so hab ich es verstanden!!!!!
Aber ich lese den Pfad aus einer ini Datei eben mit einem Backslash und muss das so konvertieren wie es aussehen würde wenn es der user eingibt mit zwei Backslash..
Und nachdem Bachslash eben so ein Ecsape zeichen ist macht mir das ziemliche schwierigkeiten!(Aber jetzt weiß ich zumind. wieso es einmal \ und einmal \\ heisst....)
lg, ronny
-
also in der text oder ini datei steht z.b.
C:\ordner1
so das ist der pfad
jetzt liest du die zeile ein ( meintetwegen in eine CString varialbe namens "name" )
dann hast du z.b. als auswahl pic1.jpeg
dann machst du folgenden ( ohne replace oder sonstwas )
name = name + "\\pic1"; // wenn du von einer listbox den bild namen brauchst //wiess jetzt auch nciht genau den befehl // CString auswahl = meineListbox.naja die aktuelle postion halt name = name + "\\" + auswahl;so einfach. das möchtest du doch machen oder?
hier wie man zeilenweise einliest ( in meiner ini datei steht nur eine zeile
CStdioFile source; CFileException error; CString lineBuf; source.Open("C:\\Dokumente und Einstellungen\\weissNichtWieIchHeiss\\Desktop\\test.ini", CFile::modeRead, &error); if (error.m_cause) { error.ReportError(); } else { while (source.ReadString(lineBuf)) { name = lineBuf; } source.Close(); }
-
SUPER DANKE!!!!!!!!!!!!!!!!!!!

AAHHHH genial Danke!!!!In meinem Stirng stand dann anscheinend:
C:\\pfaddatei.dat ... da ich das Backslash nach dem letzten Ordner nicht hinzugefügt habe!!!Super nochmal vielen Dank, da fällt mir jetzt echt ein RIESEN Stein vom Herzen!!!
DANKE!
LG, Ronny
-
hehe kann passieren
deswegen wie hellsgore sagte
debuggen
dann kannst es ja genau sehen

und PS @ all: nicht immer tausend !!!!!!!! nach jeder zeile verwenden. ist ja keine ebay auktion hier

-
[b]tut mir leid das schreiben zu müssen, aber ich denke du kennst das MSDN nur aus dem Forum.
Ich habe mir deine sämtlichen Beiträge durchgelesen - MSDN - STICHWORT "BLA" hätte gereicht !Ich hab einfach reingeguckt - REPLACE gesehen - UND PROBIERT !!!!!
MIT ERFOLG !