下面的代碼搜索的工作原理:更改TStrings.Delimiter打破按名稱
var
SL: TStrings;
begin
SL := TStringList.Create;
try
SL.Add(Format('%s=%s', ['Alex', '14.05.1984']));
ShowMessage(SL.Values['Alex']);
finally
SL.Free;
end;
end;
儘管此代碼不能正常工作(不能從名稱獲得價值):
var
SL: TStrings;
begin
SL := TStringList.Create;
try
SL.Delimiter := '|'; // <=== changed from default '=' char
SL.QuoteChar := '"'; // <=== added
SL.StrictDelimiter := True; // <=== added
SL.Add(Format('%s=%s', ['Alex', '14.05.1984']));
ShowMessage(SL.Values['Alex']); // <=== returns an empty string
finally
SL.Free;
end;
end;
有人能幫助我嗎?
被修改
program Sample;
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes,
Dialogs;
var
SL: TStrings;
begin
try
SL := TStringList.Create;
try
SL.Delimiter := '|';
SL.QuoteChar := '"';
SL.StrictDelimiter := True;
// SL.Add(Format('%s=%s', ['Alex', '14.05.1984']));
SL.LoadFromFile('ReplacementPairs.txt');
ShowMessage(SL.Values['Alex']);
finally
SL.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
的ReplacementPairs.txt文件的內容是:
Alex|14.05.1984
Paul|10.07.2015
Edith|18.11.1961
你爲什麼不用字典? – 2015-02-10 16:07:02
因此,即使TStrings實例內部知道*新分隔符,更改分隔符也會按名稱打破搜索。 – 2015-02-10 16:10:58
你不用自己添加名稱 - 值對,爲什麼不寫:'SL.Values ['Alex']:= '14 .05.1984''? – 2015-02-10 16:10:59