Ja, leider werden leere Items immer gelöscht.
Du könntest ein Leerzeichen zuweisen, anstatt eines Leerstrings,
und beim Lesen halt mit Trim.
Oder, entsprechend dem PUT, die ganze Zeile zuweisen, anstatt nur den Value.
Zitat:
Delphi-Quellcode:
procedure TStrings.SetValue(const Name, Value: string);
var
I: Integer;
begin
I := IndexOfName(Name);
if Value <> '' then
begin
if I < 0 then I := Add('');
Put(I, Name + NameValueSeparator + Value);
end else
begin
if I >= 0 then Delete(I);
end;
end;
procedure TStrings.SetValueFromIndex(Index: Integer; const Value: string);
begin
if Value <> '' then
begin
if Index < 0 then Index := Add('');
Put(Index, Names[Index] + NameValueSeparator + Value);
end
else
if Index >= 0 then Delete(Index);
end;