Problem mit CString::Replace
-
Hi,
in meinem CString möchte ich einige Zeichen löschen, allerdings scheint
das nur zu klappen, wenn exakt die gleiche Groß- und Kleinschreibung
übereinstimmt:CString a ="c:\Test"; CString b ="C:\Test\Abc"; b.Replace(a,""); MessageBox(b);//ergebnis ist der String b anstatt "\Abc"MakeLower möchte ich nicht verwenden, da ich später den Pfad wieder schreiben
muss und dort ebenfalls die Groß-/Kleinschreibung beibehalten werden muss
-
Vorne abschneiden kannst du mit Mid oder Rigth und GetLength aber einfacher haben.
-
....und der einfache Backslash im Pfadnamen ist mit Sicherheit falsch!!!!
Hast Du mal im Debugger nachgeschaut, was in den Strings drin steht????
-
Jencas, ich habe das Beispiel schnell zusammengestrickt, dabei habe ich die
doppelten vergessen zu setzen! Im richtige Prog ist es natürlich mit "\"
drin.@estartu: Ich habe ja keine genaue Ahnung wieviel Unterpfad ich habe.
Zudem ist auch der erste Teil des Pfades mit Laufwerk stark variabel.Ich sehe da momentan keine Lösung

-
Shell32off schrieb:
Jencas, ich habe das Beispiel schnell zusammengestrickt, dabei habe ich die
doppelten vergessen zu setzen! Im richtige Prog ist es natürlich mit "\"
drin.@estartu: Ich habe ja keine genaue Ahnung wieviel Unterpfad ich habe.
Zudem ist auch der erste Teil des Pfades mit Laufwerk stark variabel.Ich sehe da momentan keine Lösung

Was möchtest du denn erhalten?
Lediglich alles nach dem letzten Backslash?
-
Hallo HaJo,
ich habe leider das Projekt jetzt nicht hier. Es ist aber so, dass der
Benutzer in den Einstellungen einen Pfad hinterlegt. Diesen habe ich als
Konstante. Ab da kommen dann ggf. noch Unterordner hinzu. Was ich eben sagte
stimmt also nicht ganz... Der erste Teil vom Pfad ist somit bekannt.Ich muss also nur die neu gewählten Unterpfad ermitteln. Mit Mid, Right usw.
wäre es dann wohl doch machbar. Die Funktionen Replace und Delete waren allerdings sehr verlockend
Werde es am Montag umbauen und testen.Suche dann vom Anfang des String bis zum letzen sicher bekannten Backslash und
schneide danach ab.
-
Falls ich dich richtig verstanden habe möchtest du nur die Pfad extrahieren. Ich würde es folgendermassen lösen.
int Pos_letzte_Slash = b.ReverseFind("\\"); a = b.Left(Pos_letzte_Slash - 1); //Pfad
-
Ich würde so etwas nicht mehr selber machen. Dafür gibt es viel zu schöne Funktionen wie PathFindFilename
http://msdn2.microsoft.com/en-us/library/bb773589(VS.85).aspxUnd viele andere nette Helferlein: PathRemoveBackslash, PathFindNextComponent etc...