我能否防止TStringList在值为空字符串时删除键值对?我使用Delphi XE8和Lazarus,它们的工作方式不同。我希望即使值设置为空字符串,键值对也能留在TStringList对象中。例如:
procedure TMyClass.Set(const Key, Value: String);
begin
// FData is a TStringList object
FData.Values[Key] := Value; // Removes pair when value is empty. Count decreases and Key is lost.
end;
我遇到的问题是,当我使用Delphi编译时,空值对被删除了,我不知道后来是否有一个键的值未设置或者它被明确地设置为空字符串。此外,我无法获取所有已使用的键。现在我需要持有另一个键的集合,其中包含有关空键的信息。
MyKeyValues.Set('foo', 'bar'); // Delphi FData.Count = 1; Lazarus FData.Count = 1
MyKeyValues.Set('foo', ''); // Delphi FData.Count = 0; Lazarus FData.Count = 1