Einzelnen Beitrag anzeigen

Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#1

Leerzeilen aus Ini-Datei entfernen

  Alt 26. Nov 2005, 23:46
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
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat