Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: EOF beendet das Einlesen einer Datei vorzeitig

  Alt 24. Mär 2015, 14:52
Datei mit seltsamen Zeichen
Dann mach doch einfach so etwas:
Ausnahmsweise per Stream und nicht wie sonst per Blockread/Write

Delphi-Quellcode:
  Procedure CorrectFile(F:String);
  var
    MS : TMemoryStream;
    I : Integer;
    P : PByte;
  begin
    MS := TMemoryStream.Create;
    try
      MS.LoadFromFile(F); // geändert

      MS.Position := 0;
      P := MS.Memory;
 
      For i:=0 to MS.Size-1 do
        begin
          if P^ = $1A then // Dateiende
            P^ := $20;
          inc(p);
        end;

      MS.SaveToFile(F); // geändert
    finally
      MS.Free;
    end;
  end;
oder halt klassisch

Delphi-Quellcode:
  Procedure CorrectFile(F:String);
  var
    FD : File;
    Buffer : Array of byte;
    Size,I : Integer;
  begin
    AssignFile(FD,F);
    Reset(FD,1);
    try
      Size := FileSize(FD);

      Setlength(Buffer,Size);
      Blockread(fd,Buffer[0],Size);
      Seek(FD,0);

      For i:=0 to Size-1 do
        if Buffer[i] = $1A then
          Buffer[i] := $20;

      Blockwrite(FD,Buffer[0],Size);
    finally
      Closefile(FD);
    end;
  end;

Mavarik

Geändert von Mavarik (24. Mär 2015 um 15:04 Uhr)
  Mit Zitat antworten Zitat