Text an bestehende Dateien anzuhängen sollte mit den SEEK und LEN Membern von File-Variablen eigentlich kein Problem sein. Verwende ich unter NAV 2016 nur die Methoden der File Variable, habe ich das NULL Zeichen Problem. NAV hängt mir dann das Zeichen NULL an jede geschriebene Textzeile an. Arbeite ich dagegen mit Streams, funktioniert das Schreiben zwar ohne das NULL Zeichen Problem, doch der Dateizeiger ist im Stream offensichtlich nicht ausgereichtet. Als Ergebnis überschreibe ich jedes Mal Daten, anstelle die neuen Daten ans Dateiende anzuhängen. Früher ging das sogar direkt mit einer File-Variable ohne Probleme, doch da gab es auch noch nicht das NULL Zeichen Problem.
Eine andere Variante wäre vielleicht, direkt .NET Klassen zu verwenden. Muss ich diesen Ansatz zwingend verwenden, oder bekomme ich das auch mit den Standard NAV Bordmitteln per File-Variable und Outstream-Variable hin?
Vielleicht hat hier im Forum jemand eine Idee. Ich poste mal meinen bisherigen Quelltext:
- Code: Alles auswählen
WriteNoteToFile(Filename : Text;MessageText : Text;WriteTimestamp : Boolean)
CLEAR(OutFile);
CLEAR(OStream);
OutFile.WRITEMODE := TRUE;
CRLF := ' ';
CRLF[1] := 13;
CRLF[2] := 10;
IF EXISTS(Filename) THEN BEGIN
OutFile.OPEN(Filename, TEXTENCODING::Windows);
OutFile.SEEK(OutFile.LEN);
END ELSE
OutFile.CREATE(Filename, TEXTENCODING::Windows);
OutFile.CREATEOUTSTREAM(OStream);
IF WriteTimestamp THEN
OStream.WRITETEXT(STRSUBSTNO('%1 %2 %3', TODAY, TIME, MessageText))
ELSE
OStream.WRITETEXT(MessageText);
OStream.WRITETEXT(CRLF);
OutFile.CLOSE;
Lokale Variablen der Funktion:
- Code: Alles auswählen
OutFile: File
CRLF: Text[2]
OStream: OutStream
GruĂź,
Marc