# FindFirst und FindNext



## saywordgirl (12. Februar 2004)

Hey!

Ich bin ganz neu hier und habe ein Frage.

Ich soll ein Programm schreiben, welches Dateien vergleicht. Die Dateien stehen in 2 verschiedenen Verzeichnissen. Nun sollen die Dateien aus dem einem Verzeichnis mit denen aus dem anderen vergleichen werden, ob sie den gleichen Inhalt haben.

Ich soll dazu FindFirst und FindNext benutzen. Leider habe ich da so meine Probleme und versteh gar nicht wirklich wie man das benutzt und wie es funtioniert. Wenn mir zusätzlich noch jemand schnell fread auffrischen könnte, wäre ich dankbar. Ich hab schon überall gesucht, aber ich kann nichts wirkliches dazu finden. Vielleicht steh ich aber momentan auch nur aufm Schlauch...

Liebe Grüsse


----------



## Kachelator (12. Februar 2004)

> FindFirst und FindNext


 Ist das nicht Pascal? Delphi oder so? Scheint es für C/C++ nicht zu geben (ausser in der kleinen Schreibweise findfirst, findnext).

fread() ist normaler Bestandteil von C. Wenn ich bei Google oder so danach suche, habe ich zig Treffer. Da sollte doch wohl was bei sein.


----------



## saywordgirl (12. Februar 2004)

Ja, meine ich doch findfirst und findnext... sorry

Ich habe nach fread gegooglet, aber wie ich eben schon sagte, wahrscheinlich steh ich aufm Schlauch.

Trotzdem Danke!

LG


----------



## Kachelator (12. Februar 2004)

Brauchst du noch Hilfe oder hast du alles bei Google gefunden?


----------



## saywordgirl (12. Februar 2004)

fread ist denke ich soweit klar.

Nur findfirst und findnext, da blick ich leider gar nicht durch. Ich hab auch danach gegoggelt, aber konnte mit dem was ich gefunden hab gar nix anfangen. Bin nicht gerade der C Profi und immer ein wenig scher von begriff....


----------



## Kachelator (12. Februar 2004)

http://www2.pmf.fh-goettingen.de/~isimon/Informatik/PronixCKurs/ckurs115.html
(AllTheWeb, etwa 8. Treffer von  722 bei der Suche nach "findfirst")
Sogar in Deutsch!


----------



## saywordgirl (12. Februar 2004)

Dankeschön!

Ich werds mir gleich anschauen!


----------



## saywordgirl (13. Februar 2004)

Ich habe es mir angeschaut, aber leider versteh ich es nicht. Ich bin wirklich schwer von Begriff was sowas angeht. 

Kannst du mir das vielleicht kurz in deinen eigenen Worten erklären?
Ganz einfach? Stell dir vor ich wäre blond...


----------



## Kachelator (13. Februar 2004)

Ich habe mal einfach ein paar Kommentare in das Beispiel reingesetzt:


```
/*Download:find.c*/

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>
#include <dos.h>

// hier wird ALL definiert - das ist eine Maske für die Dateiattribute,
// die die gefundenen Dateien aufweisen müssen. Stimmen die Attribute einer
// Datei nicht mit der Maske überein, wird sie ignoriert (nicht gefunden).
#define ALL FA_RDONLY|FA_HIDDEN|FA_SYSTEM|FA_LABEL|FA_DIREC|FA_ARCH

int main(int argc, char *argv[])
{
  int ret;
  struct ffblk info;
  // ein Pfad muss als Parameter übergeben werden
  if(argc != 2)
  {
    fprintf(stderr,"Benutzung : %s suchpfad\n",argv[0]);
    exit (1);
  }

  // Finden wird mit dem Verzeichnisnamen, der Infostruktur, und der
  // Attribute-Maske ALL initialisert. info ist eigentlich kein Parameter, sondern
  // ein Rückgabewert (darin sind ja nach jedem Aufruf von findnext 
  // die Infos für die nächste Datei drin).
  ret=findfirst(argv[1],&info,ALL);
  // info enthält jetzt  Infos über die erste gefundene Datei, falls vorhanden
  while(ret==0)  // find...() geben 0 zurück, wenn nichts mehr gefunden wird
  {
    //Dateinamen und Grösse ausgeben
    printf("%20s : %6ld Bytes\n",info.ff_name,info.ff_fsize);
    ret=findnext(&info);
    // info enthält jetzt  Infos über die NÄCHSTE gefundene Datei, falls vorhanden
    // wenn nicht, ist ret == 0
  }
  return 0;
}
```
  Hilft das weiter?


----------



## saywordgirl (13. Februar 2004)

Danke! 

Leider versteh ich es immer noch nicht. Abernichts für ungut...

Danke für die Mühe


----------



## Daniel Toplak (13. Februar 2004)

> Leider versteh ich es immer noch nicht. Abernichts für ungut...


Und wo hast du da Schwierigkeiten?
Also eigentlich hat es Kachelator doch sehr ausführlich erklärt.
Das Prinzip ist das eines Iterators, der solange 0 zurückgibt, solange er einen gültigen Eintrag bzw. eine gültige Datei findet.
Die Infos stehen dann in der Struktur drin.
Evtl. hast du ja grundlegende Schwierigkeiten mit C.
Ich will ja niemandem was unterstellen.
Aber wenn du uns nicht sagst, wo es happert, dann kann dir auch niemand helfen.

Gruß Homer


----------



## falkoko (28. Februar 2004)

Zu dem Thema habe ich mal noch 'ne Frage:

So wie ich festgestellt habe, funktioniert das findfirst und findnext bei Delphi nicht online. Warum ist das so? Und gibt es eine andere Möglichkeit, Inhalte von Web-Ordnern zu ermitteln?

-falkoko.-


----------



## Kachelator (29. Februar 2004)

> So wie ich festgestellt habe, funktioniert das findfirst und findnext bei Delphi nicht online.


  Hm, Dephi ist doch Pascal, oder? Da dies hier ein C++ Forum ist, rate ich dir, es in einem anderen Forum zu versuchen, weil es relativ unwahrscheinlich ist, hier eine befriedigende Antwort auf deine Frage zu bekommen.


----------



## falkoko (1. März 2004)

Hmm. Hast Recht. Ich war über Umwege (Google) auf diesen Beitrag gestoßen...

-falkoko.-


----------

