So.... schon wieder ich.
Die Sache mit der STRING_TO_BUFFER-Funktion ist soweit ok, die Daten kommen an der richtigen Stelle im Buffer an.
Jetzt habe ich aber ein neues Problem mit dem Schreiben der Daten:
Das XML-file ändert sich nicht. Muss ich irgendetwas beachten, wenn ich das öffnen der Datei vorbereite?? Aus der Dokumentation geht das für mich irgendwie nicht klar hervor.
Bislang mache ich die Initialisierung wie folgt:
FSD.FILENAME:= CONCAT(yFileName , '.xml');
FSD.MODE:=2;(*vorhandene Datei zum schreiben öffnen*)
FSD.AUTO_CLOSE := T#0s; (*kein auto close verwenden*)
BUF_O.SIZE:= 65535;(*Maximale Länge einlesen*)
FSD.OFFSET:= Offset_1;(*Start des Öffnens beim OFFSET*)
OpenDone:= FALSE;
Mode := 001;
In der Doku steht nun "Sollen Daten geschrieben werden, so müssen vor Aufruf, die zu
schreibenden Daten in PT.BUFFER und bei PT.SIZE die Anzahl der Bytes
eingetragen werden". Das habe ich so realisiert:
WriteDone:= _STRING_TO_BUFFER(Data,Offset_1 , ADR(BUF_O.BUFFER),SIZEOF(BUF_O.BUFFER));(*String in den Buffer BOF_O übertragen*)
BUF_O.SIZE:= LenGes;(*Standartmäßig auf 8 gesetzt*)
IF WriteDone THEN
Mode:= 010;
END_IF
Nun folgt der Funktionsaufruf:
fbFileOpen(FSD:= FSD, PT:=BUF_O);
IF FSD.FILE_OPEN AND fbFileOpen.error = FALSE THEN
Mode:= 020;
OpenDone:=FSD.FILE_OPEN;
ELSE
OpenErrorID:= fbFileOpen.error_code;
END_IF
Zu nächsten schritt (Schließen der Datei mit FSD.Mode := 5) gehe ich also erst, wenn die Datei geöffnet ist (FSD.FileOpen := TRUE).
Meine Frage wäre nun, ob man das so machen kann oder ob ich noch irgendetwas vergessen habe (zum Beispiel nach dem Öffnen)??
Grüße Christian