Delphi 5 Delphi 5 TStringList名称值分隔符
我有一个包含键值对的文本文件,如下所示Delphi 5 Delphi 5 TStringList名称值分隔符,delphi-5,tstringlist,Delphi 5,Tstringlist,我有一个包含键值对的文本文件,如下所示 user1|password1 user2|password2 user3|password3 在Delphi10中,我使用此函数获取键值 function getKeyByName(fileName, key: string) : string; var dataFile : TStringList; begin Result := 'Not Found'; dataFile := TStringList.Create; dataFil
user1|password1
user2|password2
user3|password3
在Delphi10中,我使用此函数获取键值
function getKeyByName(fileName, key: string) : string;
var
dataFile : TStringList;
begin
Result := 'Not Found';
dataFile := TStringList.Create;
dataFile.LoadFromFile(fileName);
dataFile.NameValueSeparator := '|';
if dataFile.Values[key] <> '' then
Result := dataFile.Values[key];
dataFile.Free;
end;
现在一切都很顺利
我尝试在delphi 5中使用此函数,但属性NameValueSeparator不存在
如果我将分隔符更改为=并将函数更改为:
function getKeyByName(fileName, key: string) : string;
var
dataFile : TStringList;
begin
Result := 'Not Found';
dataFile := TStringList.Create;
dataFile.LoadFromFile(fileName);
if dataFile.Values[key] <> '' then
Result := dataFile.Values[key];
dataFile.Free;
end;
我可以得到结果,但文本文件中的分隔符是|
如何设置列表的分隔符char |
谢谢您的帮助。Delphi 5没有NameValueSeparator属性,因此您必须手动解析各个字符串,例如:
function getKeyByName(fileName, key: string) : string;
var
dataFile : TStringList;
i, j: Integer;
s: string;
begin
Result := 'Not Found';
dataFile := TStringList.Create;
try
dataFile.LoadFromFile(fileName);
for i := 0 to dataFile.Count-1 do
begin
s := dataFile[i];
j := Pos('|', s);
if j = 0 then Continue;
if Copy(s, 1, j-1) <> key then Continue;
s := Copy(s, j+1, MaxInt);
if s <> '' then Result := s;
Break;
end;
finally
dataFile.Free;
end;
end;
最好使用合适的词典。请给我举个例子。你需要使用第三方词典代码。对于我们来说,绕过这样一个古老的德尔菲的所有限制是不太有趣的。如果您不想找到第三方库,您是否考虑过自己编写一些代码来执行此操作?我想我将从delphi 10创建一个DLL文件,并将其加载到delphi5中。如果要这样做,您可以扔掉字符串列表并使用字典。