FsiOpen
Mit dieser Funktion wird die externe Datei (alpha1) geöffnet. In (alpha1) kann der vollständige Pfad angegeben werden. In (int2) muss mindestens eine der _FsiAcs...-Optionen angegeben werden, da ansonsten keine Operationen auf der Datei durchgeführt werden können.
Außerdem sollte unbedingt eine der _FsiDeny...-Optionen benutzt werden, um die Multiuser-Fähigkeit sicherzustellen.
Folgende Optionen können in (int2) angegeben werden:
-
Nur Lesezugriff
-
Nur Schreibzugriff
-
Lese- und Schreibzugriff
-
Exklusiver Lesezugriff
-
Exklusiver Schreibzugriff
-
Exklusiver Lese- und Schreibzugriff
-
Kein exklusiver Zugriff
-
Datei anlegen oder öffnen
-
Datei explizit anlegen
-
Datei leeren
-
Datei erweitern
-
Synchrones Schreiben
-
Standard-Lesemodus
-
Standard-Schreibmodus
-
Lesen/Schreiben puffern
-
Lesen/Schreiben nicht puffern
-
Lesen/Schreiben einer ANSI-Datei
-
Keine Zeichenwandlung beim Lesen oder Schreiben einer Datei
-
Dateiname ist im CONZEPT 16-Zeichensatz angegeben
-
Dateiname ist im UTF-8-Zeichensatz angegeben
Die folgenden Optionen (int2) gelten nur für Windows:
-
Datei temporär öffnen
Die folgenden Optionen (int2) gelten nur für UNIX:
-
Leseberechtigung für Benutzer
-
Schreibberechtigung für Benutzer
-
Leseberechtigung für Gruppe
-
Schreibberechtigung für Gruppe
-
Leseberechtigung für Andere
-
Schreibberechtigung für Andere
Das Resultat ist größer Null, wenn die Datei erfolgreich geöffnet wurde. Bei einem negativen Resultat ist ein Fehler aufgetreten. Der Fehlerwert des Betriebssystems kann über die Eigenschaft FsiError abgefragt werden. Wurde die Option _FsiCreateNew angegeben und die Datei existiert bereits, ist das Resultat _ErrFsiExists.
Beispiele:
tHandle # FsiOpen('\Test.asc', _FsiStdRead);
if (tHandle > 0)
{
...
tHandle->FsiClose();
}
else
{
// Fehlerbehandlung
...
}
// Liste aller Dateien eines Verzeichnisses erstellen
sub WriteFileList
(
aPath : alpha(4096);
)
local
{
tHdlDir : handle;
tName : alpha(4096);
tFile : handle;
tTestFile : handle;
}
{
tHdlDir # FsiDirOpen(aPath + '\*.txt', _FsiNameUtf8);
tFile # FsiOpen(aPath + '\files.txt', _FsiStdWrite | _FsiPure);
tName # tHdlDir->FsiDirRead();
while (tName != '')
{
tTestFile # FsiOpen(aPath + '\' + tName, _FsiStdRead | _FsiNameUtf8);
if (tTestFile > 0)
{
tName # tName + ' -> Open OK';
tTestFile->FsiClose();
}
else
tName # tName + ' -> Open FAIL';
tFile->FsiWrite(tName);
tFile->FsiWrite(StrChar(13) + StrChar(10));
tName # tHdlDir->FsiDirRead();
}
tHdlDir->FsiDirClose();
tFile->FsiClose();
}