Fb_fileOpen Fb_fileClose Fb_file_write

bluebird277

Level-1
Beiträge
100
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich muss mehrere werte nacheinander in eine Textdatei schreiben. Das Öffnen und schreiben sowie das schließen funktioniert auch.
Leider wird beim nächsten Durchgang kein neuer eintrag ans Ende der Datei angehängt.

Laut Information System ist aber FOPEN_MODEAPPEND "a": Öffnet eine Datei zum Schreiben am Ende der Datei (anhängen). Wenn die Datei nicht existiert, wird zuerst eine neue angelegt.

Hab Ich da einen Denkfehler?

Vielen Dank für eure Hilfe

CASE step OF
(* open destination file *)
1: fbFileOpen( bExecute := FALSE );
fbFileOpen( sNetId := '',
sPathName := 'C:\xyz.txt',
nMode := FOPEN_MODEAPPEND ,
ePath := PATH_GENERIC,
tTimeout := t#5s,
bExecute := TRUE );
Step := Step+1;

2: fbFileOpen( bExecute := FALSE );
IF ( NOT fbFileOpen.bBusy ) THEN
IF ( fbFileOpen.bError ) THEN
nErrId := fbFileOpen.nErrId;
bError := TRUE;
Step := 50;
ELSE
hDestFile := fbFileOpen.hFile;
Step := Step + 1;
END_IF
END_IF

3:
fbFileWrite( bExecute := FALSE );
fbFileWrite( sNetId:='',
hFile:=hDestFile,
pWriteBuff:= ADR(buffRead),
cbWriteLen:=cbReadLength,
bExecute:=TRUE,
tTimeout:=t#5s);
Step := Step + 1;

4:
fbFileWrite( bExecute := FALSE );
IF ( NOT fbFileWrite.bBusy ) THEN
IF ( fbFileWrite.bError ) THEN
nErrId := fbFileWrite.nErrId;
bError := TRUE;
Step := 50;
END_IF
Step := Step + 1;
END_IF

5:
fbFileClose( bExecute := FALSE );
fbFileClose( sNetId:='',
hFile:=hDestFile,
bExecute:=TRUE,
tTimeout:=t#5s );
Step := Step + 1;

6:
fbFileClose( bExecute := FALSE );
IF ( NOT fbFileClose.bBusy ) THEN
IF ( fbFileClose.bError ) THEN
nErrId := fbFileClose.nErrId;
bError := TRUE;
END_IF
Step := 50;
hDestFile := 0;
END_IF

50: (*error or ready => cleanup*)
IF ( hDestFile <> 0 ) THEN
Step := 5; (* close the destination file*)
ELSE
Step := 0; (* ready *)
bBusy := FALSE;
END_IF

END_CASE
 
Wieso setzt du in den Schritten 2, 4 und 6 die Bausteine zurück bevor du deren Status auswertest? Das macht doch keinen Sinn.
 
Zurück
Oben