FsiOpen
FsiOpen(alpha1, int2) : handle
Datei öffnen
Details
- alpha1: Dateiname/-pfad
- int2: Optionen (siehe Text)
- Resultat:
handleDatei-Deskriptor oder Fehlerwert - Siehe: Verwandte Befehle ,
FsiClose (), Fehlerwerte , Beispiel
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:
_FsiAcsRNur Lesezugriff_FsiAcsWNur Schreibzugriff_FsiAcsRWLese- und Schreibzugriff_FsiDenyRExklusiver Lesezugriff_FsiDenyWExklusiver Schreibzugriff_FsiDenyRWExklusiver Lese- und Schreibzugriff_FsiDenyNoneKein exklusiver Zugriff_FsiCreateDatei anlegen oder öffnen_FsiCreateNewDatei explizit anlegen_FsiTruncateDatei leeren_FsiAppendDatei erweitern_FsiSyncWriteSynchrones Schreiben_FsiStdReadStandard-Lesemodus_FsiStdWriteStandard-Schreibmodus_FsiBufferLesen/Schreiben puffern_FsiNoCacheLesen/Schreiben nicht puffern_FsiANSILesen/Schreiben einer ANSI-Datei_FsiPureKeine Zeichenwandlung beim Lesen oder Schreiben einer Datei_FsiNameC16Dateiname ist im CONZEPT 16-Zeichensatz angegeben_FsiNameUtf8Dateiname ist im UTF-8-Zeichensatz angegeben
Die folgenden Optionen (int2) gelten nur für Windows:
_FsiDeleteOnCloseDatei temporär öffnen
Die folgenden Optionen (int2) gelten nur für UNIX:
_FsiUserRLeseberechtigung für Benutzer_FsiUserWSchreibberechtigung für Benutzer_FsiGroupRLeseberechtigung für Gruppe_FsiGroupWSchreibberechtigung für Gruppe_FsiOtherRLeseberechtigung für Andere_FsiOtherWSchreibberechtigung 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();
}