Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Daten beim einlesen verschluckt, warum?

  Alt 6. Jul 2005, 12:56
Also ich würde den ganzen alten Kruscht mit assignfile, readln, ... wegschmeisen und stattdessen
mit den "modernen" Streams arbeiten.
Der Datentyp file of [Typ] verwendet gepufferte Schreib- und Lesezugriffe.
In der heutigen Zeit, da das Betriebssystem Dateien puffert, ist das eher störend.

Du kannst die gesammte Datei auf einen Rutsch auf einen String einlesen.
Damit stehen dann sämtliche Möglichkeiten offen.
Delphi-Quellcode:
function LoadStringFromFile(const filename:string):string;
var
   fs : TStream;
begin
   fs := TFileStream.Create(filename, fmOpenRead or fmShareDenyWrite);
   try
      SetLength(Result, fs.Size);
      fs.ReadBuffer(Result[1], fs.Size);
   finally
      fs.Free;
   end;
end;

....
var
   daten : string;
begin
   daten := LoadStringFromFile(opendialog.FileName);
   memdaten.Lines.Text := daten;
Die Funktion LoadStringFromFile sollte man immer parat haben. Ebenso wie das Gegenstück:
Delphi-Quellcode:
procedure SaveStringToFile(const filename, data:string);
var
   fs : TStream;
begin
   fs := TFileStream.Create(filename, fmOpenWrite or fmShareDenyWrite);
   try
      fs.WriteBuffer(data[1], Length(data));
   finally
      fs.Free;
   end;
end;
Andreas
  Mit Zitat antworten Zitat