[Gelöst] Zeilenumbruch in Datei

24. Januar 2007 15:12

Hallo zusammen,

ich würde gerne eine Datei per CodeUnit schreiben. Funktioniert auch alles, bis auf den Zeilenumrbuch:

Code:

IF SalesHeader.FIND('-') THEN BEGIN

file.CREATE('c:\Test.txt');
file.TEXTMODE(TRUE);
file.CREATEOUTSTREAM(outstream);

REPEAT

outstream.WRITE(SalesHeader."No.");

UNTIL SalesHeader.NEXT = 0;

file.CLOSE();

END;


Im Hexeditor kann ich sehen das Zeichen (00) eingefügt wurden. Ist natürlich nicht ganz korrekt. Kann mir Jemand helfen?
Zuletzt geändert von TimWolf am 24. Januar 2007 18:10, insgesamt 1-mal geändert.

24. Januar 2007 15:31

Versuch mal folgendes:
Code:
IF SalesHeader.FIND('-') THEN BEGIN

file.CREATE('c:\Test.txt');
file.TEXTMODE(TRUE);
file.CREATEOUTSTREAM(outstream);

REPEAT

outstream.WRITETEXT(SalesHeader."No.");

UNTIL SalesHeader.NEXT = 0;

file.CLOSE();

END;

24. Januar 2007 15:34

Hallo,

Hier ein Auszug aus der Online-Hilfe zum WRITE-Befehl:
If TEXTMODE (File) is set to TRUE and Value is an integer, the system formats the integer into text and writes the result, followed by a new line character.

Re: Zeilenumbruch in Datei

24. Januar 2007 15:40

TimWolf hat geschrieben:Im Hexeditor kann ich sehen das Zeichen (00) eingefügt wurden. Ist natürlich nicht ganz korrekt. Kann mir Jemand helfen?


Das Problem ist der Outstream.Write befehl

Entweder Outstream.writetext oder einfach den Outstream ganz weglassen und direkt in das File schreiben.
Code:
IF SalesHeader.FIND('-') THEN BEGIN

file.CREATE('c:\Test.txt');
file.TEXTMODE(TRUE);

REPEAT
  file.WRITE(SalesHeader."No.");
UNTIL SalesHeader.NEXT = 0;

file.CLOSE();

END;

Re: Zeilenumbruch in Datei

24. Januar 2007 15:42

hi,

fuege nach jeder Zeile einfach ein LineFeed (LF char10, bei manchen Programmen reicht auch ein CR char13) ein.

Code:
Name   DataType   Subtype   Length
lf   Char      

lf := 10;
IF SalesHeader.FIND('-') THEN BEGIN
  file.CREATE('c:\Test.txt');
  file.TEXTMODE(TRUE);
  file.CREATEOUTSTREAM(outstream);
    REPEAT
      outstream.WRITE(SalesHeader."No.");
      outstream.WRITE(lf);
  UNTIL SalesHeader.NEXT = 0;
  file.CLOSE();
END;


--- edit ---
ups, da haben jetzt 4 Leute gleichzeitig geposted :wink:

Gruesse
feri

24. Januar 2007 15:45

Danke, hab den OutputStream jetzt einfach weggelassen.