Hi,
ich mache das erste mal was mit PC WORX, weis also nicht ob der Baustein in anderen Versionen korrekt funktioniert. Der DLOG_STORE_FILE_CSV wollte bei mir nicht laufen und hat immer mit ERROR=161 (FILE_REMOVE Datei konnte nicht gelöscht werden) abgebrochen. Wenn eine neue Datei mit FSD.MODE=BYTE#3 angelegt wird, dann wird immer zuerst die Datei gelöscht mti FILE_REMOVE. Wenn die Datei nicht vorhanden ist, dann gibt FILE_REMOVE im meinem Fall Fehler 21 (File could not be deleted.) aus. Das ist völlig in Ordnung, nur darf deswegen der FILE_SERVER die Operation nicht abbrechen.
Hier mein Workaround:
(* ------------ File Remove ------------- *)
FILE_REMOVE.Execute := command = BYTE#7;
FILE_REMOVE.Name := FSD.FILENAME;
FILE_REMOVE();
IF command = BYTE#7 THEN
IF FILE_REMOVE.Done THEN
error := FILE_REMOVE.Error;
(*<neu>*)
IF FSD.MODE = BYTE#3 AND FILE_REMOVE.ErrorID = UINT#21 THEN
error := FALSE; (*beim neu Anlegen kann es schonmal vorkommen das die Datei vorher nicht gelöscht werden kann*)
END_IF;
(*</neu>*)
command := BYTE#0;
error_code := SEL_BYTE(error,BYTE#00,UINT_TO_BYTE(FILE_REMOVE.ErrorID + UINT#140)); (* Errorcode basis verschieben *)
(* ---------------------- Debug-Message ----------------------------*)
(*IF _debug_enable THEN
LOG_CL.NEW_MSG := 'Remove: File ~1, error ~7, code ~8';
LOG_CL.PRINTF[1] := used_filename;
LOG_CL.PRINTF[7] := INT_TO_STRING(BOOL_TO_INT(error),'%d');
LOG_CL.PRINTF[8] := BYTE_TO_STRING(error_code,'%u');
LOG_MSG();
END_IF;*)
(* -----------------------------------------------------------------*)
END_IF;
END_IF;
Greetz
arsh0r