鍵值配對
你可以使用 TStringList 儲存鍵值對。例如,如果要儲存設定,這可能很有用。設定由鍵(設定的識別符號)和值組成。每個鍵值對以 Key = Value 格式儲存在 StringList 的一行中。
procedure Demo(const FileName: string = '');
var
SL: TStringList;
i: Integer;
begin
SL:= TStringList.Create;
try
//Adding a Key-Value pair can be done this way
SL.Values['FirstName']:= 'John'; //Key is 'FirstName', Value is 'John'
SL.Values['LastName']:= 'Doe'; //Key is 'LastName', Value is 'Doe'
//or this way
SL.Add('City=Berlin'); //Key ist 'City', Value is 'Berlin'
//you can get the key of a given Index
IF SL.Names[0] = 'FirstName' THEN
begin
//and change the key at an index
SL.Names[0]:= '1stName'; //Key is now "1stName", Value remains "John"
end;
//you can get the value of a key
s:= SL.Values['City']; //s now is set to 'Berlin'
//and overwrite a value
SL.Values['City']:= 'New York';
//if desired, it can be saved to an file
IF (FileName <> '') THEN
begin
SL.SaveToFile(FileName);
end;
finally
SL.Free;
end;
end;
在此示例中,Stringlist 在銷燬之前具有以下內容:
1stName=John
LastName=Doe
City=New York
關於效能的說明
在引擎蓋下,TStringList
通過直接迴圈遍歷所有專案來執行金鑰搜尋,在每個專案中搜尋分隔符並將名稱部分與給定金鑰進行比較。無需說它對效能產生巨大影響,因此這種機制只應用於非關鍵的,很少重複的地方。在效能很重要的情況下,應該使用來自 System.Generics.Collections
的 TDictionary<TKey,TValue>
來實現雜湊表搜尋,或者將金鑰儲存在已分類的 TStringList
中,其值儲存為 Object
-s,從而利用二進位制查詢演算法。