您可以在TDictionary中使用记录作为键值吗?我想根据字符串、整数和整数的组合查找对象。
这会返回对象2。
TUserParKey=record
App:string;
ID:integer;
Nr:integer;
end;
...
var
tmpKey:TUserParKey;
tmpObject:TObject;
begin
tmpObject:= TTObject.Create(1);
tmpKey.App:='1';
tmpKey.ID :=1;
tmpKey.Nr :=1;
DTUserPars.Add(tmpKey,tmpObject)
...
var
tmpKey:TUserParKey;
begin
tmpKey.App:='1';
tmpKey.ID :=1;
tmpKey.Nr :=1;
if not DTUserPars.TryGetValue(tmpKey,Result) then begin
result := TTObject.Create(2);
end;
这会返回对象2。
BobJenkinsHash(PChar(Value.App)^, Length(Value.App) * SizeOf(Char), 0)
代替BobJenkinsHash(Value.App[1], Length(Value.App) * SizeOf(Char), 0)
。这也适用于空字符串。请注意不要改变原来的意思。 - Grzegorz Skoczylas