Datei - Eigenschaften (BEISPIEL)
(* Beispiel wie CAA_FILE.library – Funktionsblöcke für Dateieigenschaften zu verwenden sind *)
PROGRAM FILE.PROP_PRG
VAR
xFilePropInit: BOOL:=FALSE;
uiFilePropState: UINT:=0;
sFileName: CAA.FILENAME:= 'TestFile.txt';
hFile: CAA.HANDLE;
szFileSize: CAA.SIZE := 0;
dtLastFileMod: DT;
sLastFileModification: STRING:='';
filop: FILE.Open;
filcl: FILE.Close;
filsa: FILE.SetAttribute;
filgs: FILE.GetSize;
filgt: FILE.GetTime;
END_VAR
IF NOT xFilePropInit THEN
filop(xExecute:=FALSE);
filcl(xExecute:=FALSE);
filsa(xExecute:=FALSE);
filgs(xExecute:=FALSE);
filgt(xExecute:=FALSE);
xFilePropInit:=TRUE;
uiFilePropState:=0;
ELSE
CASE uiFilePropState OF
0: (* Dateigröße abfragen *)
filgs.sFileName:=sFileName;
filgs( xExecute:=TRUE);
IF filgs.xDone THEN
szFileSize:=filgs.szSize;
uiFilePropState:=1;
END_IF
IF filgs.xError THEN
(* Fehlerbehandlung *)
;
END_IF
1: (* Abfrage vom Datum der letzten Änderung in der Datei *)
filgt.sFileName:=sFileName;
filgt( xExecute:=TRUE);
IF filgt.xDone THEN
dtLastFileMod:=filgt.dtLastModification;
sLastFileModification:=DT_TO_STRING(dtLastFileMod);
uiFilePropState:=2;
END_IF
IF filgt.xError THEN
(* Fehlerbehandlung *)
;
END_IF
2: (* Datei öffnen *)
filop.sFileName:=sFileName;
filop.eFileMode:=FILE.MRDWR;
filop.xExclusive:=TRUE;
filop( xExecute:=TRUE);
IF filop.xDone THEN
hFile:=filop.hFile;
uiFilePropState:=3;
END_IF
IF filop.xError THEN
(* Fehlerbehandlung *)
;
END_IF
3:(* Dateiattribut setzen - schreibgeschützt *)
filsa.hFile:=hFile;
filsa.eFileAttrib:=FILE.READONLY;
filsa( xExecute:=TRUE);
IF filsa.xDone THEN
uiFilePropState:=4;
END_IF
IF filsa.xError THEN
(* Fehlerbehandlung *)
;
END_IF
4:(* Datei schließen *)
filcl.hFile:=hFile;
filcl( xExecute:=TRUE);
IF filcl.xDone THEN
uiFilePropState:=5;
END_IF
IF filcl.xError THEN
(* Fehlerbehandlung *)
;
END_IF
5: (* Ende vom Beispiel *)
;
END_CASE
END_IF