TurboPL Referenz

FindFirstFile

Top  Previous  Next

Syntax

FindFirstFile(Mask, AttrMask: String; var FileName: String; var FileSize: Integer; var FileDate: Date; var FileTime: Time; var Attr, Folder: String): Integer;

Kategorie

Basisfunktion

Beschreibung

Sucht den ersten Verzeichniseintrag, der dem in Mask übergebenen Suchmuster und den Attributen in AttrMask übereinstimmt.

Die Attribute in AttrMask bestimmen, welche Einträge zusätzlich zu den normalen Dateien gesucht werden sollen. Es ist eine Kombination aus den Datei-Attribut-Buchstaben, die weiter unten beschrieben sind. Ein Leerstring '' sucht also nur nach normalen Dateien, 'D' sucht nach normalen Dateien und Verzeichnissen. 'SH' sucht nach normalen Dateien, Systemdateien und versteckten Dateien usw.

Das Ergebnis der Suche wird in den Parametern FileName bis Folder zurückgegeben:

FileName

Name der gefundenen Datei

Size

Dateigrösse

Date

Datumstempel der Datei

Time

Zeitstempel der Datei

Attr

Dateiattribute als Zeichenkette von Datei-Attribut-Buchstaben

Folder

Ordner, in dem sich die Datei befindet

Ist die Suche erfolgreich, wird 0 zurückgegeben, ansonsten ein negativer Fehlercode:

-1

Allgemeiner Fehler

-2

Der Pfad in Mask ist ungültig, zum Beispiel weil er ein nicht vorhandenes Laufwerk oder Verzeichnis enthält.

-3

Es wurde kein passender Verzeichniseintrag gefunden.

Um den nächsten Verzeichniseintrage zu lesen, benutzen Sie die Funktion FindNextFile. Wenn Sie auch den Inhalt von Unterverzeichnissen benötigen, müssen Sie FindFirstFile rekursiv aufrufen, wie im Beispiel unten gezeigt wird.

Achtung

FindFirstFile belegt Ressourcen, die durch einen Aufruf von CloseFindFile wieder freigegeben werden müssen.

Datei-Attribute

Die folgenden Buchstaben kennzeichnen die verschiedenen Datei-Attribute. Kombinationen dieser Buchstaben werden sowohl bei der Angabe von AttrMask als auch im Ergebnis als Attr verwendet. Dabei kommt es auf die Reihenfolge der Buchstaben im String nicht an:

D

Verzeichnis (Directory)

H

Versteckt (Hidden)

S

System-Datei

V

Datenträger-Bezeichnung (Volume ID, nur unter DOS wirksam)

R

Nur lesen (Read Only), hat als AttrMask keine Wirkung

A

Archiv, hat als AttrMask keine Wirkung

Beispiel

Der folgende Code schreibt den Inhalt des übergebenen Ordners inklusiv aller Unterverzeichnisse in die Datei content.txt. Dazu ruft man ListFolderContent mit dem gewünschten Ursprungsverzeichnis auf, z.B. ListFolderContent("C:\programme"):

procedure WriteFolderContent(OutFile: Integer; Level: Integer; Folder: String);
       vardef Result: Integer;
       vardef FName, FAttributes, FFolder: string;
       vardef FSize: Integer;
       vardef FDate: Date;
       vardef FTime: Time;
       Result := FindFirstFile(Folder + "\*.*", "DHS", FName, FSize, FDate, FTime, FAttributes, FFolder);
       while Result = 0
               if not FName = "." and not FName = ".."
                       WriteLn(OutFile, NTimes("  ", Level) + FName + " " + DateStr(FDate) + " " + FAttributes);
                       if Pos("D", FAttributes) > 0
                               WriteFolderContent(OutFile, Level + 1, Folder + "\" + FName);
                       end;
               end;
               Result := FindNextFile(FName, FSize, FDate, FTime, FAttributes, FFolder);
       end;
       CloseFindFile;
endproc;

 

procedure ListFolderContent(StartFolder: String);
       vardef OutHdl: Integer;
       OutHdl := ReWrite(StartFolder + "\content.txt");
       WriteLn(OutHdl, "Content of Folder: " + StartFolder);
       WriteFolderContent(OutHdl, 0, StartFolder);
       Close(OutHdl);
endproc;

Siehe auch

FindNextFile, CloseFindFile