Warum eigentlich umständlich AssignFile+ReadLn und nicht LoadFromFile?
Delphi-Quellcode:
StringList.LoadFromFile(Filename);
StringList.Text := ReplaceStr(StringList.Text, sLineBreak + '[', sLineBreak + sLineBreak + '[');
StringList.SaveToFile(Filename);
Delphi-Quellcode:
// vielleicht auch sicherheitshalber so?
StringList.LoadFromFile(Filename);
StringList.Text := ReplaceStr(ReplaceStr(StringList.Text, sLineBreak + sLineBreak, sLineBreak), sLineBreak + '[', sLineBreak + sLineBreak + '[');
StringList.SaveToFile(Filename);
War ein Vorschlag für Verbesserungen bin ich immer offen.
Zumal sie in dem Fall auch kürzer sind.
Auf der anderen Seite warum erst speichern .. dann laden und anschließend wieder speichern.
Macht irgendwie keinen Sinn den die Daten sind ja vorhanden.
Ich wollte halt meine Ini Formatieren damit sie besser zum lesen ist.
Und das Schnipsel wollte ich veröffentlichen falls es jemand braucht.
Letztendlich führen viele Wege zum ziel.
Zitat:
Gibt es einen Unterschied im Ergebnis zu diesem etwas knapperen hier?
Delphi-Quellcode:
procedure FormatINI(aFilename:
String);
var
f: TStringlist;
i: Integer;
begin
f := TStringlist.Create;
f.LoadFromFile(aFilename);
// Remove blank lines
i := 0;
while i < f.Count
do
begin
if Length(Trim(f[i]))=0
then
f.Delete(i)
else
inc(i);
end;
// Add blank lines before section headers
i := f.Count-1;
while i>0
do
begin
if (Length(Trim(f[i]))>0)
and (Trim(f[i])[0]='
[')
then
f.Insert(i, '
');
dec(i);
end;
f.SaveToFile(aFilename);
f.Free;
end;
JO warum soll ich erst leere Zeilen löschen ist unnötig.
Wird bei mir in einem rutsch erledigt.
bzw.. werden ignoriert wenn es leere Zeilen gibt.
Und auch hier unnötige zugriffe auf die Datei warum nochmalig öffnen wenn sie schon geöffnet ist?
gruss