// Es werden
Strings immer an den Anfang einer Textdatei gespeichert, also
// Last In - First Out. Zusätzlich kann festgelegt werden, ob der
String
// einfach nur eingefügt wird (wie bei write): ZeilenSchaltung=False, oder als
// Zeile interpretiert wird (wie bei writeln): ZeilenSchaltung=True.
// Getestet mit D4 unter Win98
procedure VornSpeichern(TextDatei, S: string; ZeilenSchaltung: boolean);
var
fs: TFilestream;
ss: TStringstream;
ms: TMemoryStream;
begin
if Zeilenschaltung then begin
if copy(s, length(s) - 1, 2) <> #13#10 then
s := s + #13#10;
end else begin
if copy(s, length(s) - 1, 2) = #13#10 then
delete(s, length(s) - 1, 2);
end;
ms := TMemorystream.create();
fs := Tfilestream.create(TextDatei, fmOpenRead or fmShareDenyread);
ss := TStringStream.create(s);
ms.size := fs.size + ss.size;
ms.seek(0, sofrombeginning);
ms.copyfrom(ss, ss.size);
ms.seek(ss.size, sofrombeginning);
ms.copyfrom(fs, fs.size);
fs.free;
ss.free;
ms.savetofile(TextDatei);
ms.free;
end;
procedure TForm1.Button5Click(Sender: TObject);
var txt, dateiname: string;
begin
txt := 'Neuer Eintrag'; // oder Memo1.Text o.ä.
dateiname := 'c:\test.txt';
VornSpeichern(dateiname, txt, true);
end;
|