Einzelnen Beitrag anzeigen

rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#1

WriteLn hackt letzte Zeile ab

  Alt 14. Jul 2011, 10:24
Delphi-Version: 2009
Moin zusammen!

Um eine Text-Datei von A nach B zu kopieren, und dabei u. U. den Inhalt zu manipulieren, verwende ich das folgende Coding:

Delphi-Quellcode:
      AssignFile(txtQ, strQuelle + libFiles.Items[intHelp]);
      Reset(txtQ);
      AssignFile(txtZ, strZiel + libFiles.Items[intHelp]);
      ReWrite(txtZ);
      // 1. Kopieren und evtl. Konvertieren
      while not Eof(txtQ) do begin
         ReadLn(txtQ, strLine);
         if strConvert = 'truethen begin
            strLine   := dvbk_ConvANSItoDOS(strLine);
         end;
         strLine      :=   f_SonderZ(strLine);
         WriteLn(txtZ, strLine);
      end;
Bei der Konvertierung wird in Abhängigkeit von strConvert = true die Zeile von ANSI (Quelle = IBM) nach DOS (MS-DOS 6.2) umgewandelt. Immer werden Sonderzeichen mit f_SonderZ ersetzt. Das nur zur Erklärung der beiden Funktionen - mit meinem Problem hat das nichts zu tun.

Mein Problem liegt da, dass am Ende der Zieldatei immer ein paar Byte fehlen. Die 1000 Sätze werden korrekt von der Quelldatei (txtQ) nach Zieldatei (txtZ) übertragen, nur in der letzten Zeilen fehlen immer ein paar Stellen. Die Satzlänge beträgt übrigen 1.623 Byte.

Ich habe schon versucht, nach dem Kopieren noch eine Leerzeile anzuhängen, das hat aber leider nichts gebracht.

Kennt jemand das Verhalten und hat einen Tipp, was ich tuen kann?

Viele Grüße
Rolf
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat