[C++] Problem mit _mkdir()

Buba235

Erfahrenes Mitglied
Hallo Leute!

Ich hab ein seltsamen Problem mit der Windows Funktion _wmkdir(). Folgendes Problem - wenn ich einen Pfad habe, in dem mehrere Ordner noch nicht existieren, so muss ich sie Schritt für Schritt erstellen. So weit so gut, denn das klappt alles auch super. Nur wenn ich einen Pfad ala C:\Neu\Test\Weiter\Gehts\Mit\Dem\Ordner, und wenn nur dieser Pfad existiert: C:\Neu\Test, dann werden alle Ordner bis auf der letzte erstellt. Egal wie lange (oder kurz) der Pfad ist, es handelt sich immer um den letzten Ordner, der nicht erstellt wird. Aber warum? Das Seltsame an der Sache ist, dass der letzte Ordner manchmal erstellt wird, wenn ich langsam durch debugge. Aber selbst ein Sleep() hat nichts gebracht. Vielleicht habt ih da ne Lösung! Hier mal mein Code:
Code:
// check if path exists. If not create it!
    if (_waccess(usTmp, mode) == -1)
    {
        list = dirName.split("/");

        // get the splitted path without separators and create new path
        for (unsigned int i = 0; i < list.size(); i++)
        {
            temp        =   list[i];
            sNewPath    +=  temp.append("/");

            // check if this path exists - if not create it
            if (_waccess(sNewPath.toUtf16(), mode) == -1)
            {
                // create directory
                iErg = _wmkdir(sNewPath.toUtf16());
                if (iErg != 0) 
                { 
                    return false; 
                }

                bRet = true;
            }

        }
    }
    else
    {
       Trace(TRACE_LEVEL_INFO, "Dir::mkpath: Path still exists!\n");
        bRet = true;
    }

    return bRet;

wundert euch nicht über den Code - das sind alles eigene Datentypen!
Gruß
Buba


edit: Wenn ich einen relativen Pfad angebe (z.B.: /Anwendungen/1/2/3/4) dann werden ALLE Ordner erstellt. Aber eben nur in der Hierarchie, in der das Programm selber s"sitzt".
 
Zuletzt bearbeitet:
Dann zeig' doch mal die Definitionen von .split() und .size() - oder lass dir einfach den Wert von i zurück- oder ausgeben... und vielleicht auch noch den Wert von list.size()?


Greetz
Enum
 
Zuletzt bearbeitet:
Zurück