Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Dateien rekursiv suchen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 <
030
05.02.2007, 16:54 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wie bereits gesagt wurde musst du halt eine rekursive Funktion schreiben und jedesmal wenn du was gefunden hast schauen ob es eine entsprechende Datei oder ein Verzeichnis ist.
Wenns ein Verzeichnis ist musst du darin weitersuchen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
031
05.02.2007, 17:44 Uhr
xXx
Devil


Und das weitersuchen machst du damit das du die FUnktion sich selbst aufrufen lässt, allerdings als Pfad diesesmal noch den Ordnernamen dran hängst ...


Code:
void foo(pfad)
{
    solange finde_datei_in(pfad)
    {
        wenn (datei = verzeichnis)
            foo(pfad + datei);
        sonnst
            gib pfad + "\\" + datei aus
    }
}
So halt ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
032
05.02.2007, 18:23 Uhr
xxChillerzz



So habe es ausprobiert und des ist ja kein richtiger Code.
Kann nicht vll. jemand den ganzen Code schreiben und dann reinstellen
Progge erst mit C seit 4Woche.
Also des PRogramm sollte auf der ganzen C nach txt Dateien suchen und nicht nur eine Datei ausgeben es sollte auch die Unterverzeichnise durchsuchen
Hoffe das vll. jemand den Code hineinschreiben kann den ganzen inklusive findfile
oda so
^^

Dieser Post wurde am 05.02.2007 um 18:28 Uhr von xxChillerzz editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
033
05.02.2007, 21:50 Uhr
xXx
Devil


Ma der Code nennt sich Pseudo-Code und soll nur mit dem deutschen Sprachraum verdeutlichen, wie du es machen musst. Die richtigen Funktionen einsetzen usw musst DU machen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
034
10.02.2007, 14:56 Uhr
xxChillerzz



Ich habe jetzt folgenden Code geschrieben:

C++:
int main(int argc, char *argv[])
{
HANDLE fHandle;
WIN32_FIND_DATA wfd;

fHandle=FindFirstFile("C:\\*",&wfd);

do
{
    // Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)
    // hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist
    if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
    {
        if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            MessageBox(0,wfd.cFileName,"Folgendes Verzeichnis wurde gefunden:",0);
            // Datei ist keine, sondern ein Verzeichnis...
            // Hier könnte man dasselbe nochmal machen, um auch die
            // Unterverzeichnisse zu scannen ;-)
        }
        else
        {
            MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0);
        }
    }
}
while (FindNextFile(fHandle,&wfd));
FindClose(fHandle);
  system("PAUSE");    
  return 0;
}



Wie durchsuche ich jetzt auch die Unterordner???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
035
10.02.2007, 15:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


den ganzen mist in eine funktion packen und die dann rekursiv aufrufen. (wie zum 1000000000000 mal schon geschrieben)
--
class God : public ChuckNorris { };

Dieser Post wurde am 10.02.2007 um 15:02 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
036
10.02.2007, 15:15 Uhr
xxChillerzz



beispiel???
wenn ich die aufrufe bringt des nicht viel

Dieser Post wurde am 10.02.2007 um 15:24 Uhr von xxChillerzz editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
037
10.02.2007, 15:51 Uhr
~FreiherrEintritt
Gast


Weißt du eigentlich, was das Wort Rekursion bedeutet?
Wenn du ne rekursive Funktion willst, die Verzeichnisse und deren Unterverzeichnisse auflistet, dann muss sich diese Funktion selbst wieder aufrufen. Nehmen wir an, die Funktion heißt

C++:
void suchePfad(char *strPfad);


und gibt mit printf den Namen strPfad aus.
Dann musst du in dieser Funktion mit den FindFile-Methoden den Pfad nach Unterverzeichnissen durchsuchen und bei jedem neu gefundenen Unterverzeichnis die Funktion wieder aufrufen.

Dieser Post wurde am 10.02.2007 um 17:27 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
038
10.02.2007, 15:52 Uhr
xxChillerzz



ok thx
thema kann geclosed werden
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] > 4 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: