Referenz - FILEATTR
Syntax: FILEATTR ( Dateinummer, [Ausgabe] )
Typ: Funktion
Kategorie: Dateien
FILEATTR gibt Informationen über eine mit OPEN geöffnete Datei zurück.
Anmerkung:
Um diese Funktion nutzen zu können, muss die Datei file.bi in Ihren Quellcode eingebunden werden, z.B. mit INCLUDE. Alternativ können Sie auch die Datei vbcompat.bi einbinden, da diese die file.bi automatisch in Ihr Programm lädt.
- 'Dateinummer' ist die Nummer, die beim Öffnen mit OPEN zugewiesen wurde.
- 'Ausgabe' ist eine beliebige Zahl, die angibt, welche Information über die Datei zurückgegeben werden soll. Weiter unten ist aufgelistet, welcher Wert welche Information zurück gibt. Wird dieser Parameter ausgelassen, nimmt FreeBASIC automatisch 1 an.
- Der Rückgabewert ist eine INTEGER-Zahl, die von 'Ausgabe' abhängig ist und die Eigenschaften einer Datei beschreibt. Kann eine Information nicht abgefragt werden, z.B. weil die angegebene Dateinummer nicht belegt ist, so ist der Rückgabewert 0.
Abhängig von 'Ausgabe' werden verschiedene Werte ausgegeben. Um den Code besser lesbar zu gestalten, sind in der Datei 'file.bi' Symbole definiert worden, welche die Information hinter den Zahlenwerten in Worten wiedergeben. Folgende Werte können angegeben werden bzw. werden ausgegeben:
Wert für 'Ausgabe' | Symbol für 'Ausgabe' | Zurückgegebene Information | Rückgabewerte | Symbole für Rückgabewerte |
---|---|---|---|---|
1 | fbFileAttrMode | Dateimodus (z.B. BINARY), in dem 'Dateinummer' geöffnet wurde | 1 2 4 8 32 | fbFileModeInput fbFileModeOutput fbFileModeRandom fbFileModeAppend fbFileModeBinary |
2 | fbFileAttrHandle | Der Handle, über den das System auf die Datei zugreift. Es ist derselbe Handle, den die C Runtime-Library verwendet. Nur unter Windows: Wenn an dieser Stelle der Handle eines geöffneten COM-Geräts abgefragt wird, gibt FreeBASIC das Ergebnis der API CreateFile() zurück. Der Rückgabewert für den Handle eines geöffneten LPT-Geräts ist das Ergebnis der API OpenPrinter(). Diese Handle-Werte können an andere Windows-API-Funktionen übergeben werden. Nur unter Linux: Der Rückgabewert für ein geöffnetes COM-Gerät ist der Datenbezeichner, der von OPEN() zurückgegeben wird. | - entfällt - | - entfällt - |
3 | fbFileAttrEncoding | Die Codierungsvariante (z.B. ASCII, UTF-8), mit der die Datei behandelt wird. Siehe auch ENCODING. | 0 1 2 3 | fbFileEncodASCII fbFileEncodUTF8 fbFileEncodUTF16 fbFileEncodUTF32 |
Beispiel 1:
#INCLUDE "file.bi"
DIM f AS INTEGER
f = FREEFILE
OPEN "C:\BASIC\FreeBASIC\fbc.exe" FOR INPUT AS #f
SELECT CASE FILEATTR(f, fbFileAttrMode)
CASE fbFileModeInput
PRINT "Die Datei wurde im INPUT-Modus geoeffnet"
CASE fbFileModeOutput
PRINT "Die Datei wurde im OUTPUT-Modus geoeffnet"
CASE fbFileModeAppend
PRINT "Die Datei wurde im APPEND-Modus geoeffnet"
CASE fbFileModeRandom
PRINT "Die Datei wurde im RANDOM-Modus geoeffnet"
CASE fbFileModeBinary
PRINT "Die Datei wurde im BINARY-Modus geoeffnet"
END SELECT
PRINT "Das System-Handle zur Datei ist"; FILEATTR(f, fbFileAttrHandle)
SELECT CASE FILEATTR(f, fbFileAttrEncoding)
CASE fbFileEncodASCII
PRINT "Die Datei ist als ASCII-Datei geoeffnet"
CASE fbFileEncodUTF8
PRINT "Die Datei ist als UTF-8-Datei geoeffnet"
CASE fbFileEncodUTF16
PRINT "Die Datei ist als UTF-16-Datei geoeffnet"
CASE fbFileEncodUTF32
PRINT "Die Datei ist als UTF-32-Datei geoeffnet"
END SELECT
CLOSE #f
SLEEP
Ausgabe:
Die Datei wurde im INPUT-Modus geoeffnet
Das System-Handle zur Datei ist 2009267424
Die Datei ist als ASCII-Datei geoeffnet
Beispiel 2:
#INCLUDE "vbcompat.bi"
#INCLUDE "crt.bi"
DIM f AS FILE PTR, i AS INTEGER
' Öffne eine Datei und schreibe einige Zeilen hinein
OPEN "test.txt" FOR OUTPUT AS #1
f = CAST( FILE PTR, FILEATTR( 1, fbFileAttrHandle ))
FOR i = 1 TO 10
fprintf( f, !"Line %i\n", i )
NEXT i
CLOSE #1
' Öffne die Datei erneut, und lese den Text aus dieser
OPEN "test.txt" FOR INPUT AS #1
f = CAST( FILE PTR, FILEATTR( 1, fbFileAttrHandle ))
WHILE feof(f) = 0
i = fgetc(f)
PRINT CHR(i);
WEND
CLOSE #1
Unterschiede zu QB:
- Für 'Ausgabe = 1' verhält sich FreeBASIC genauso wie QB.
- QBX und 16bit-VB (VBDOS) geben einen DOS-Datenhandle zurück, wenn 'Ausgabe = 2' gesetzt wird.
- Die Verwendung von 'Ausgabe = 3' ist neu in FreeBASIC.
Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v0.17
Siehe auch:
OPEN, ENCODING, Dateien (Files), Betriebssystem-Anweisungen
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|