Ich lege in einer Ini-Datei Sections mit Datum als Namen an und lösche diese auch wieder, wenn Sie älter als 7 Tage sind
[15.10.2005]
TXT1=Value1
TXT2=Value2
[16.10.2005]
TXT1=Value1
TXT2=Value2
usw.
beim Löschen der Section
Ini.EraseSection([16.10.2005])
wird aber die Leerzeile nicht gelöscht. Nach einigen Wochen entsteht so eine Ini-Datei mit ganz vielen Leerzeilen
Ich habe eine umständliche Programmierung gefunden, die Leerzeilen löscht
Delphi-Quellcode:
{***** Leerzeilen herausschneiden, d.h. Ascii-Folge 13 10 13 10 *****}
fs := TFilestream.Create(BefundListe + '
EKGBefunde.txt' ,fmopenread
or fmShareDenyNone);
SetLength(ba, fs.Size);
fs.
Read(ba[0], Length(ba));
fs.Free;
i := 0; j := 0;
for i := 0
to Length(ba)
do begin
if NOT ((ba[i] = 10)
AND (ba[i-1] = 13)
AND (ba[i-2] = 10))
AND NOT ((ba[i] = 13)
AND (ba[i-1] = 10)
AND (ba[i-2] = 13))
then
begin
SetLength(bn, j + 1); bn[j] := ba[i];
//s := s + ' ' + IntToStr(ba[i]);
inc(j);
end;
end;
fs := TFileStream.Create(BefundListe + '
EKGBefunde.txt', fmCreate);
fs.Writebuffer(bn[0], Length(bn));
fs.Free;
{****************************************************************************}
In dem Code wird Byte-weise abgefragt, ob die
Ascii-Folge 13 10 mehr als einmal hintereinander vorkommt und nur dann der zweite Puffer gefüllt, wenn das nicht der Fall ist
Hat jemand einen Tipp wie das ohne FileStream direkt mit Ini.EraseStream geht?
Übrigens wurde mal die Frage gepostet, wie man Leerzeilen einfügt, das geht einfach so
Ini.WriteString(FormatDateTime('dd.mm.yyyy',now), 'TXT1' , s + #13#10)
Ralf