005
08.01.2007, 20:59 Uhr
~Pingu625
Gast
|
Ja ok, erstmal danke für die Hilfe.
Ich habe in PHP schon desöftern mit rekursiven Funktionen gearbeitet. Ich werde mir das ganze nochmal sehr genau durchschauen, damit ích den Code besser verstehe.
Aber jetzt erstmal zu deinem Tipp. Ich denke mal, dein Code zum überspringen des Schleifendurchgangs müsste an den Anfang der Schleife... Außerdem müsste man doch sicherlich aus der if-Abfrage für ein Unterverzeichnis diese beiden (".","..") Fälle streichen, da beide gleichzeitig ja nicht sein können.
Nun müsste der Code in etwa so aussehen:
C++: |
while ((hFind != INVALID_HANDLE_VALUE) && (GetLastError() != ERROR_NO_MORE_FILES)) { if(hFindData.cFileName == "." || hFindData.cFileName == "..") continue;
if (hFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // subdir subDir = dir + hFindData.cFileName + "\\";
Directories (subDir); } else { Form1->ListBox1->Items->Add(dir + hFindData.cFileName); } FindNextFile(hFind, &hFindData); }
|
Aber irgendwie stimmt er doch nicht. Ich weiß nicht, ob ich den Fehler finde wenn ich vllt. das mit den rekursiven Funktionen wieder anschaue.
Aber vllt. ist es ja auch was ganz simples, wie das mit dem AnsiString.
Ich les mir jetzt erst nochmal ein bisschen über rek. Funktionen durch, dann schau ich weiter.
Aber vllt. ist einer von euch schneller mit Fehler finden...
Pingu
EDIT: Noch ne Frage. Wird durch das continue; überhaupt "FindNextFile(hFind, &hFindData);" ausgeführt, sodass nicht immer auf der gleichen Datei rumgehackt wird? Oder ist das eine Art Endlosschleife, die nicht endlos ist. Mein PC hängt sich zwar nicht auf, aber er gibt mir eine tolle Datei aus. Ungefähr so: C:\xy\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\z.bmp Dieser Post wurde am 08.01.2007 um 21:13 Uhr von Pingu625 editiert. |