CString beschneiden



  • hallo,
    ich einen CString mit diesem Inhalt : //SERVER_1/XYZ/ABC/text.txt der CString kann mal 50 Zeichen enthalten oder 10 er ist varieable
    jetzt möchte ich alles außer text.txt in eine neue Variable packen wie geht das bitte mit Bsp:



  • nur fuer dich: eine von 500000 moeglichkeiten:

    CString strPfadUndDatei =  "//SERVER_1//XYZ//ABC//text.txt";
    CString strTemp = strPfadUndDatei;
    CString strPfad = strPfadUndDatei.Right(8);
    strPfadUndDatei = strTemp;
    

    Esco

    und; never forget:

    Bitte immer erst in die FAQ schauen. Die MSDN darf hier natürlich auch nicht fehlen.

    somit haben sich auch alle: "wie mach' ich das jetzt, wenn der dateiname laenger ist..." fragen wohl geklaert.

    achja: dies ist ein programmierforum und kein weltethikforum, beschneidungsthemen solltest du hier nicht diskutieren 😃



  • Esco schrieb:

    CString strPfadUndDatei =  "//SERVER_1//XYZ//ABC//text.txt";
    CString strTemp = strPfadUndDatei;
    CString strPfad = strPfadUndDatei.Right(8);
    strPfadUndDatei = strTemp;
    

    Mal abgesehen davon, dass dein Code die gestellte Aufgabe nicht löst: Wozu die 2. und 4. Zeile?

    @bumbumb2005:
    PathRemoveFileSpec und PathAddBackslash sollten tun, was du brauchst. Allerdings arbeiten die Funktionen nicht direkt mit CStrings, du musst also entweder vorher den Inhalt ein einen TCHAR-Array kopieren oder mit CString::GetBuffer arbeiten.



  • MFK schrieb:

    Esco schrieb:

    CString strPfadUndDatei =  "//SERVER_1//XYZ//ABC//text.txt";
    CString strTemp = strPfadUndDatei;
    CString strPfad = strPfadUndDatei.Right(8);
    strPfadUndDatei = strTemp;
    

    Mal abgesehen davon, dass dein Code die gestellte Aufgabe nicht löst: Wozu die 2. und 4. Zeile?

    bumbumb2005 schrieb:

    jetzt möchte ich alles außer text.txt in eine neue Variable packen[...]

    wo ist das problem?!

    Esco



  • MFK hat schon recht.
    in strPfad steht nachher "text.txt" und Zeile 2 und 4 sind wirklich sinnlos, da strPfadUndDatei in Zeile 3 nicht verändert wird.

    Wenn ich sein Problem richtig verstanden habe, würde ich es so lösen:

    CString strPfadUndDatei =  "//SERVER_1/XYZ/ABC/text.txt";
    CString strPfad= strPfadUndDatei.Left(strPfadUndDatei.ReverseFind('/')+1);
    

    BTW: normale Slashes (/) müssen nicht verdoppelt werden in Strings, da sie keine Escapesequenz einleiten.



  • Bei ReverseFind würde ich nach ('//') suchen.



  • Quatsch.

    Siehe auch:

    dEUs schrieb:

    normale Slashes (/) müssen nicht verdoppelt werden in Strings, da sie keine Escapesequenz einleiten.



  • sassyl schrieb:

    Bei ReverseFind würde ich nach ('//') suchen.

    Noch nicht verstanden warum es in einem CString 2 \ gibt?

    CString test("c:\\\test\\hallo.txt")



  • wieso
    "c:\\\"?



  • dEUs schrieb:

    wieso
    "c:\\\"?

    Das war eine Beispiel weil man es c:\\ordner schreiben kann.
    Bevor also die Fragen kommen was bei 2 \\ passiert darum 4 \ .....

    Insbesondere wichtig bei Netzfreigaben.



  • Unix-Tom schrieb:

    dEUs schrieb:

    wieso
    "c:\\\"?

    Das war eine Beispiel weil man es c:\\ordner schreiben kann.
    Bevor also die Fragen kommen was bei 2 \\ passiert darum 4 \ .....

    Ahso

    Unix-Tom schrieb:

    Insbesondere wichtig bei Netzfreigaben.

    Genau.


Anmelden zum Antworten