findfirst, _wfindfirst

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu dir.h - Index


Header-Datei

dir.h

Kategorie

Verzeichnisbearbeitungsroutinen

Prototyp

int findfirst(const char *pathname, struct ffblk *ffblk, int attrib);

int _wfindfirst( const wchar_t *pathname, struct _wffblk *ffblk, int attrib);

Beschreibung

Durchsucht ein Verzeichnis auf dem Datenträger.

findfirst beginnt, in einem Verzeichnis auf dem Datenträger nach Dateien zu suchen, die durch Attribute oder Platzhalter angegeben werden.

pathname ist ein String mit einer optionalen Angabe von Laufwerkspfad und Dateiname der gesuchten Datei. Nur die Angabe des Dateinamens kann Platzhalterzeichen (wie ? oder *) enthalten. Wenn eine passende Datei gefunden wird, werden die Datei- und Verzeichnisdaten in die Struktur ffblk eingetragen.

Wenn Unicode definiert ist, verwendet die Funktion _wfindfirst die folgende Struktur _wffblk.

struct _wffblk {

long ff_reserved;

long ff_fsize;

unsigned long ff_attrib;

unsigned short ff_ftime;

unsigned short ff_fdate;

wchar_t ff_name[256];

};

Unter Win32 hat die Struktur ffblk folgendes Format:

struct ffblk {

long ff_reserved;

long ff_fsize; /* Dateigröße */

unsigned long ff_attrib; /* Gefundenes Attribut */

unsigned short ff_ftime; /* Erstellungszeit der Datei */

unsigned short ff_fdate; /* Erstellungsdatum der Datei */

char ff_name[256]; /* Gefundener Dateiname */

};

attrib ist ein ein Byte langes Dateiattribut, das zur Auswahl der für die Suche relevanten Dateien dient. Für attrib sollte eine der folgenden in dos.h definierten Konstanten gewählt werden:

FA_RDONLY

Nur-Lesen-Attribut

FA_HIDDEN

Verborgene Datei

FA_SYSTEM

Systemdatei

FA_LABEL

Datenträgerbezeichner

FA_DIREC

Verzeichnis

FA_ARCH

Archiv



Mit OR können mehrere Konstanten miteinander kombiniert werden.

Detailliertere Informationen zu diesen Attributen finden Sie in der Dokumentation Ihres Betriebssystems.

ff_ftime und ff_fdate enthalten Bitfelder zum Verweis auf das aktuelle Datum und die aktuelle Uhrzeit. Die Struktur dieser Felder wurde vom Betriebssystem festgelegt. In beiden Fällen handelt es sich um 16-Bit-Strukturen, die in drei Felder unterteilt sind.

ff_ftime:

Bits 0 bis 4

Die resultierenden Sekunden dividiert durch 2 (beispielsweise bedeutet 10 hier 20 Sekunden)

Bits 5 bis 10

Minute

Bits 11 bis 15

Stunde



ff_fdate:

Bits 0 bis 4

Tag

Bits 5 bis 8

Monat

Bits 9 bis 15

Jahre seit 1980 (beispielsweise bedeutet 9 hier 1989)



Die in io.h deklarierte Struktur ftime enthält Bitfelder für Uhrzeit und Datum, die ähnlich strukturiert sind wie ff_ftime und ff_fdate.

Rückgabewert

findfirst gibt 0 zurück, wenn eine Datei mit dem gesuchten Pfadnamen gefunden wurde.

Wenn keine Dateien mehr vorhanden sind oder wenn der Dateiname falsch angegeben wurde:

  • -1 wird zurückgegeben,
  • errno wird folgender Wert zugewiesen:

ENOENT

Path or file name not found (Pfad oder Dateiname nicht gefunden)



  • _doserrno wird einer der folgenden Werte zugewiesen:

ENMFILE

No more files (Keine weiteren Dateien)

ENOENT

Path or file name not found (Pfad oder Dateiname nicht gefunden)



Beispiel:



 /* Beispiel für findfirst und findnext */
 #include <stdio.h>
 #include <dir.h>
 int main(void)
 {
    struct ffblk ffblk;
    int done;
    printf("Directory listing of *.*\n");
    done = findfirst("*.*",&ffblk,0);
    while (!done)
    {
       printf("  %s\n", ffblk.ff_name);
       done = findnext(&ffblk);
    }
    return 0;
 }



Portabilität



POSIX Win32 ANSI C ANSI C++

findfirst

+

_wfindfirst

Nur NT



Siehe auch