D
Hi,
Alexander Sulfrian schrieb:
ich habe diese Erscheinung auch schon in denderen Zusammenhängen beobachtet! Selbst bei einfachen rekursiven Funktionen wurden machmal die internen Variablen verwürfelt
ein kleines Code-Beispiel währe interessant. Ich nutze häufig Rekursion und wenn es da irgend welche grundsätzlichen Probleme gäbe, währe das fatal ... (wieso gibt es eigentlich kein Smilie für *Angst Angst Angst*)
DerAltenburger schrieb:
Ich denke FindFirst, FindNext ... nutzen systemnahe Funktionen - ev immer den gleichen Speicherbereich
Kann ich mir nicht vorstellen, zumal gerade diese Funktionen ja regelrecht nach Rekursion schreien. Die VCL-Funktionen deuten dem Namen nach stark auf die Win-API.
Hier eine API-Version als Alternative. Man sieht sofort die Ähnlichkeiten...
void SearchFiles(String dir)
{
/*
- durchläuft rekursiv alle Dateien und Verzeichnisse
von _dir (ohne back slash)
*/
WIN32_FIND_DATA filedata;
HANDLE filehandle;
String subDirName;
filehandle = FindFirstFile((dir + "\\*.*").c_str(), &filedata);
bool found = (filehandle != INVALID_HANDLE_VALUE);
while (found == true)
{
if ((filedata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
{
subDirName = filedata.cFileName;
if ((subDirName != ".") && (subDirName != ".."))
{ //Unter-Verzeichnis
SearchFiles(dir + "\\" + subDirName); //<--- Rekursion
}
}
else
{ //Datei
String fileName = filedata.cFileName;
}
found = FindNextFile(filehandle, &filedata);
}
FindClose(filehandle);
}