File suchen
-
Hallo,
ich benutze den Borland C++ Builder 4.0. Mit welchem Befehl kann ich auf der gesamten Festplatte nach einer Datei suchen. Zur Zeit habe ich nur Befehler wo ich den pfad erst noch angeben muss.

-
Hallo
in der FAQ steht ein Beispiel dafuer
(rekursiv)MfG
Klaus
-
Danke Klaus,
leider hilft mir das wenig weiter, da ich für c++ ein "blutiger Anfänger" bin sozusagen da ich nur wenig hiermit programmiere.
Ich möchte hierbei eine Konsolenanwendung benutzen und komme mit den Quelltextbeispielen nicht so recht zu Rande. Vielleicht gibt es ja etwas leichteres????
-
Hallo
- was hast du schon versucht
- wo klemmt esohne deine Mithilfe kann dir keiner helfen
MfG
Klaus
-
ich habe mit den Befehlen searchpath zum Beispiel gearbeitet. Leider durchsucht der ja nur den Systempfad. Mit FileFirst komme ich nicht zurecht da ich hier ja nun schon einen Pfad angeben muss.
Das angegebene Beispiel in der FAQ funktioniert nicht so recht da ich kein Ergebniss bekomme hier mal kurz der Quelltext:
#include <dir.h> #include <condefs.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { TSearchRec sr; AnsiString path; int result,l; String StartDirectory,Extension,Directory; StartDirectory="D:\\test.ini"; Extension=".ini"; result=FindFirst((StartDirectory).c_str(),faDirectory,sr); while(result==2){ Application->ProcessMessages(); if((sr.Attr & faDirectory)){ if(sr.Name[l]!='.'){ Directory=StartDirectory+(AnsiString)sr.Name+"\\"; } } } return 0; }Sinn ist hierbei eine datei zu finden auf einen bestimmten Laufwerk.
Edit:
Bitte die Code-Tags benutzen. Danke!
-
Tja.. du hast die ganze Rekursion rausgeschmissen... Result bleibt 2, deine while-Schleife ist ne Endlosschleife, du untersuchst nur die erste Datei... soll ich weiter machen?
-
Plemplem schrieb:
soll ich weiter machen?
Die Aufzählung an Fehlern, nicht dein Projekt!

-
Dann erklär doch mal bitte wie nun weiter.
wie schon gesagt das Programm soll eine Konsolenanwendung sein un das Beispiel in der FAQ hilft mir in sofern nicht weiter, da ich nichts von Strukur z.B. verstehe.
-
probier das mal
void __fastcall TfrmSUPPORTSTATUS::GetFileList(TList*Liste,String StartDirectory,TStringList *asSEARCHFILES,bool casesensitive,bool writelog) { TSearchRec sr; String Directory; AnsiString Source; AnsiString Target; int result=FindFirst((StartDirectory + "*.*").c_str(), faReadOnly|faHidden|faDirectory, sr ); while(result==0) { Application->ProcessMessages(); for(int i=0;i<=asSEARCHFILES->Count-1;i++) { if(!casesensitive) { Target = StartDirectory + (AnsiString)sr.Name; Target = Target.UpperCase(); Source = asSEARCHFILES->Strings[i]; if(!strcmp(ExtractFileName(Target).c_str(),Source.c_str())) { // Nur kopieren, wenn es nicht genau der SourceFile ist. if(Source != Target) { STARTPROGRAMM(Target);(Target); } } }//if(!casesensitive) else { if(!strcmp(asSRNAME.c_str(),(ExtractFileName(asSEARCHFILES->Strings[i])).c_str() )) { Target = StartDirectory + (AnsiString)sr.Name; Source = asSEARCHFILES->Strings[i]; // Nur kopieren, wenn es nicht genau der SourceFile ist. if(Source != Target) { STARTPROGRAMM(Target); } } }//else } //LOGFILE_ADD("files.log",StartDirectory + "\\" + sr.Name); Item->Path= StartDirectory; Item->Data=sr; Liste->Add(Item); } result=FindNext(sr); } FindClose(sr); }