Probleme mit for-Schleife



  • Hihi,

    ich lese einen Projektpfad als String ein.

    Der sieht dann so aus:
    "D:\.....\.....\.....\...\test.txt

    Jetzt brauche ich aber nur den Pfad ohne die Datei test.txt
    Dann hab ich mir überlegt ich schreibe ein for schleife, die mir so lange die Position ermittelt bis -1 audgegeben wird.

    CString tmp;
    int pos1;
    int pos;
    
    for (pos = 0; pos != -1; pos++)
    {
        pos 1 = pos;
        pos = m_strDateipfad.Find("\\",pos);
    }
     tmp = m_strDateipfad.Left(pos1);
    

    Wieso funktioniert die Schleife nicht. Wenn pos == -1 ist setzt er pos auf 0 und beginnt von vorne. Kann man bei for-Schleifen nicht auf -1 abfragen?

    Oder hat vielleicht jemand eine andere Idee wie ich an meinem String die Dateibezeichnung abschneiden kann?

    Liebe Grüße
    Andrea

    P.S.: Irgendwie schon spät geworden, vielleicht verstehe ich auch deshalb die for-Schleife nicht mehr. Ich wünsche Euch allen eine gute Nacht.



  • C++ kennt kein CString und <irgendwas>.Find ggf. auch nicht.

    Unabhängig davon:

    for (pos = 0; pos != -1; pos++)

    pos = m_strDateipfad.Find("\",pos);

    Die schleife soll pos immer um 1 hoch zählen bis Pos -1 erreicht hat. Später wird pos jedoch nicht mehr von der forschleife gesetzt sondern vom unbekannten Find.

    Nehmen wir nun an, das Find -1 liefert bei was auch immer.

    pos ist somit -1 und am Ende der Schleife wird pos++ ausgeführt.

    -1 + 1 = 0.

    Meinst nicht, das ein while o.Ä. sinnvoller wäre ?



  • Mag sein dass Du die Schleife ausgeruht besser verstehst 😉

    1. Du benutzt l nirgendwo
    2. Du weist posl nichts zu
    3. Wenn Du -1 erreichst macht ++pos daraus 0 und sucht deshalb am Anfang weiter

    Evtl. ein Tip: Such doch mit rfind von hinten nach dem ersten \ 🕶

    EDIT:
    Evtl. sollte ich auch ne Runde schlafen - dass es ein CString ist habe ich spontan mal garnicht bemerkt 😉



  • ich geh schlafen,

    dass ist ja heftichst. ich glaube morgen muss jemand die frage aus dem forum löschen.

    ich muss weg.....

    guten nacht und danke

    andrea


Anmelden zum Antworten