有一个哈希PAS文件http://gpdelphiunits.googlecode.com/svn-history/r4/trunk/src/GpStringHash.pas如何从哈希快速复制到列表视图?
我们可以创建哈希并添加键 - 值
问题1: 我们想知道如何遍历键 - 值和数据复制到列表视图。
问题2:有没有像分配方法那样快速复制的方法?
非常感谢您提前。
尊敬的gabr,非常感谢您的即时回复和散列文件。是否有文档或帮助文件或示例或演示代码?再次感谢你。
只是测试,我不知道我做错了 太谢谢你了。我刚刚使用您的代码,但有以下错误提示。或者,我犯了一些错误:
procedure TForm8.ab;
var
a: TGpStringHash;
i,j, fr:integer;
k: string;
enlist: TGpStringHashenumerator;
kv: TGpStringHashKV;
begin
a:=TGpStringHash.Create;
kv:=TGpStringHashKV.Create;
enlist:= TGpStringHashenumerator.Create(a);
for j:=1 to 10 do begin
if a.HasKey(inttostr(j)) then begin
fr:=a.ValueOf(inttostr(j));
a.Update(inttostr(j),fr+1);
end
else begin
a.Add(inttostr(j),1);
end;
end;
for i:=0 to a.Count -1 do begin
kv:=enlist.GetCurrent;
memo1.Lines.Add(kv.Key + inttostr(kv.value));
end;
end; /// Division by Zero ERROr ///FindBucket(const key: string): cardinal;
解答: 您使用枚举不当。不要在前面实例化它,并始终使用MoveNext移动到下一个元素。
// fill 'a' as above
enlist := TGpStringHashenumerator.Create(a);
while enList.MoveNext do begin
kv:=enlist.GetCurrent;
memo1.Lines.Add(kv.Key + inttostr(kv.value));
end;
不要使用TGpStringHash的无参数构造函数。 Allways至少将哈希中元素的初始数量传递给Create。 – gabr 2010-10-21 11:20:26
或者是由于不同的delphi版本? – Dylan 2010-10-21 11:21:41
我们将创建构造函数更改为:a:= TGpStringHash.Create(num,true); // with param。没有错误提示,但memo1会生成相同的数据:它们都是'-1'。请让我们知道如何改变。 – Dylan 2010-10-21 12:03:38