Problem mit Dateiauflistung (war: Warum geht das nicht)
-
Hi!
Ich habe (achtung total newbie) den folgenden code zusammenkopiert der alle unterverzeichnisse von c:\testset durchsuchen soll und alle files die er findet mit vollem pfad in memo1 schreiben - die ersten 20 files oder so klappt das auch aber dann fängt er auf einmal an ganz kryptische Zeichen einzufügen ? was is`t da falsch ? Danke !
code :
void __fastcall TForm1::Button1Click(TObject *Sender) { path="C:\\Testset\\*.*"; while (Memo2->Lines->Count!=0) { WIN32_FIND_DATA fd; HANDLE hSearch; char *pszSearchName = path; i=0; hSearch = FindFirstFile(pszSearchName, &fd); if(hSearch != INVALID_HANDLE_VALUE) { do { i++; if (fd.dwFileAttributes!=16) Memo1->Lines->Add(AnsiString(fd.cFileName)); else { if (i>2) Memo2->Lines->Add(AnsiString(path).Delete(strlen(path)-2,3) + AnsiString(fd.cFileName)); } } while(FindNextFile(hSearch, &fd)); FindClose(hSearch); } AnsiString pathhelp; pathhelp=Memo2->Lines->Strings[0] + "\\*.*"; path=pathhelp.c_str(); ShowMessage(path); Memo2->Lines->Delete(0); } }
Edit:
Bitte aussagekräftige Überschriften wählen. Danke![ Dieser Beitrag wurde am 27.06.2003 um 01:44 Uhr von Jansen editiert. ]
-
-
Du füllst hier aber 2 Memos. Die Dateinamen gehen in Memo1 und die Verzeichnisse sollen wohl in Memo2.
Wo gibt es die Probleme? Ich vermute in Memo2 oder? Treten die Probleme bei einigen Verzeichniswechseln auf?
Wie sieht Deine Ausgabe "ordentlich" aus und wie "unordentlich"?
Bist Du mal mit dem Debugger durchgegangen und hast Dir die Variablenwerte angekuckt?
-
naja, die ersten einträge sing alle ok (zB. C:\Eigene Dateien\User\test) aber nach kurzer zeit kommen nur noch einträge wie "&%/%ser" oder "■æÙtest" . Ich nehme an das ich da was bei der rumkonvertiererei falsch mache. W*****enlich hab ich da was falsch verstanden aber bisher scheint es mir als könnte man mit manchen String Typen (*char) nicht so bequem "rumbasteln" wie mit AnsiStrings...
-
Nimm fuer
pszSearchName und
pathnen AnsiString!!!
Du manipulierst wahrscheinlich pathfalsch!
path=pathhelp.c_str();
Daskommt mir komisch vor!
-
... und die VCL-Version von FindFirst, FindNext, FindClose
FindFirst(AnsiString, int, TSearchRec& );
FindNext(TSearchRec&);
FindClose(TSearchRec&);Vielleicht stimmen die Datentypen nicht, aber so ähnlich sollte es sein. Kann nicht nachschauen, weil ich mich unter Linux eingeloggt hab.