Datei - Eigenschaften (BEISPIEL)

 

(* Beispiel wie CAA_FILE.library – Funktionsblöcke für Dateieigen­schaften 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