CString aufteilen



  • Hallo,

    ich mache da irgendwas falsch, aber ich weiß nicht was:

    Ich habe im Eingabefeld mit der Membervaribablen m_icon den Pfad zu einem Icon stehen:
    "C:\Windows\System32\test icon.ico"
    Ich will jetzt den Pfad wegschneiden und nur den Dateinamen haben.
    Das war mein 1. Versuch:

    int pos1 = m_icon.Find('\\', 0); 
    CString file = m_icon.Right( pos1 );
    

    Ausgabe: 'co' -> ???
    1. Frage: Was mache ich falsch?
    2. Frage: Wie kann man mit C++ eine Funktion "Kopiere PfadA\DateiA nach PfadB\DateiB" auslösen???
    Also ich meine ohne system("copy...");, sondern mit C++. Ich müsste auch prüfen, ob der Vorgang erfolgreich war...

    Danke im voraus.

    mfg
    trequ



  • Versuch mal folgendes:

    int pos = m_icon.ReverseFind('\\'); 
    CString file = m_icon.Right( pos );
    


  • Das von q150022 sollte funktionieren...
    Dein Fehler war, dass du das erste `\' von links gesucht hast, du musst aber das erste von rechts suchen, was mit ReverseFind funktioniert. 🙂



  • Hallo,

    funktioniert leider nicht:

    1. Von Rechts suchen, klar... aber warum habe ich dann co, also die letzten beiden Buchstaben des Strings "bla bla...\testfile.ico" zurück gekriegt???

    2. Wenn ich ReverseFind verwende, erhalte ich zwar den Dateinamen, aber der 1. Buchstabe wird abgeschnitten:
    Beispiel: Aus "C:\testordner**t**estdatei.ico" wird "estdatei.ico".
    Vieleicht weil der \ ein Escape-Zeichen ist???
    Wie werde ich das los?
    Habe jetzt exakt den Code oben.

    Wenn mir jemand noch das mit dem Kopieren kurz erklären kann, hilft mir das wirklich weiter. 🙂

    Danke im voraus.

    mfg
    trequ



  • CString s;
    s="C:\Windows\System32\test\icon.ico";
    int iPos;
    iPos = s.ReverseFind('\\');
    s.Delete(0,iPos+1);
    MessageBox(s);
    

Log in to reply