[Gelöst] Daten fortlaufen in Datei schreiben

14. Januar 2010 09:20

Guten Morgen,

ich möchte verschiedene Daten in eine Textdatei forlaufend schreiben!

Code:
umbruch := STRSUBSTNO('%1%2',CR,LF); // CR und LF sind als CHAR-Variable 10 und 13 deklariert

Datei.OPEN(ExportPathFile);
Datei.WRITE(Daten);
Datei.WRITE(umbruch);
Datei.CLOSE;


Soweit funktioniert das auch. Wenn ich jedoch erneut die Funktion aufrufe, wird die bestehende Zeile einfach überschrieben und
nicht wie gewünscht "angehängt".

Danke vorab für Eure Hilfe

Gruß Wolfgang
Zuletzt geändert von winkelsbr am 14. Januar 2010 10:53, insgesamt 1-mal geändert.

Re: Daten fortlaufen in Datei schreiben

14. Januar 2010 09:38

Wenn TEXTMODE = TRUE ist, wird ein CR/LF automatisch angehängt (wenn TRUE), oder soll immer eine Leerzeile eingefügt werden?
Versuche es mit Datei.TEXTMODE(TRUE) und den Umbruch weglassen, ob dann die Daten "sauber" geschrieben werden.

Meinst du mit fortlaufend Scheiben, das pro DS eine Zeile geschrieben wird, oder das die Daten imer an die letzte Zeile fortlaufend angehängt werden (quasie Endlos)?
Wenn endlos, müsste mit POS(-2) immer zwei Zeichen zurückgegangen werden
z.B. Datei.SEEK(Datei.POS-2);

Sie auch die Befehle zu FILE in der Onlinehilfe.

Re: Daten fortlaufen in Datei schreiben

14. Januar 2010 10:09

Hallo Mikka,

hier mal der komplette Code:
Code:
Dateiname := 'test.txt';

ExportPathFile := FiBuEinrichtung."PfadControlling" + Dateiname;


OutputString := Rec_Kreditor."Nr." + ';' + Rec_Kreditor. Name + ';' + Rec_Kreditor."Name 2" +';' +
                Rec_Kreditor.Suchbegriff + ';' + Rec_Kreditor."USt-IdNr." + ';' + Rec_Kreditor.Adresse +
                ';' + Rec_Kreditor."PLZ Code" + ';' + Rec_Kreditor.Ort + ';' +
                Rec_Kreditor."Telefonnr." + ';' + Rec_Kreditor."Faxnr.";

OutputString := Ascii2Ansi(OutputString); //Ascii2Ansi => Übersetzungsfunktion


Laenge := STRLEN(OutputString);
OutputString2 := COPYSTR(OutputString,1,Laenge);

Datei.TEXTMODE(TRUE);

IF NOT EXISTS(ExportPathFile) THEN BEGIN
   Datei.CREATE(ExportPathFile);
END ELSE BEGIN
   Datei.OPEN(ExportPathFile);

END;

Datei.WRITE(OutputString2);
Datei.CLOSE;


Der Code wird über eine Codeunit aufgerufen. Teils manuell und teils automatisiert.
Die Zeilen sollen untereinander geschrieben werden.

Gruß
Wolfgang

Re: Daten fortlaufen in Datei schreiben

14. Januar 2010 10:20

Ich denke, da fehlt vorab ein Datei.seek(Datei.Len), um den Curosr ans Ende zu stellen.

Btw:
winkelsbr hat geschrieben:
Code:
Laenge := STRLEN(OutputString);
OutputString2 := COPYSTR(OutputString,1,Laenge);

Wozu soll das gut sein? :wink:

Re: Daten fortlaufen in Datei schreiben

14. Januar 2010 10:53

Hallo McClane,

der Codeschnipsel
Code:
Laenge := STRLEN(OutputString);
OutputString2 := COPYSTR(OutputString,1,Laenge);

stammt aus einer anderen Fuktion.

Dein Hinweis mit SEEK, war die Lösung.

Dank Dir

Gruß
Wolfgang