在Delphi 6中是否有类似地图或哈希表的内容?

Lou*_*ong 16 delphi

在delphi 6中是否存在任何类型的本地地图实现(将值映射到值和对象) - 到目前为止互联网一直没有帮助.我刚刚把一个delphi项目转储到我的上面,我的背景是c ++和java,而delphi项目的前一个开发人员进行线性搜索.

谢谢.

And*_*and 10

根据您的确切需要,您可能希望使用TStringList对象.

  • TStringlist可以这样做:使用`MyStringlist.Values ['apple']:='round looking fruit';`to assign和`S:= MyStringlist.Values ['apple'];`读取 (4认同)
  • @cjrh - 如果您使用Names-Values则不会.当以这种方式使用字符串列表时,它必须求助于线性搜索并且根本不进行缩放. (2认同)

Lui*_*sco 7

我使用了来自Ciaran McCreesh的名为Hashes.pas的库,但由于他的网站不再可用,您可以从以下URL看到单个PAS文件:

链接到Cian McCreesh - Hashes.pas

你也可以用谷歌找到它:"Cian McCreesh Hashes"

使用此库,您可以执行以下操作:

aString := TStringHash.Create;
aString['color'] := 'blue';
ShowMessage(aString.Items['color']); // blue
Run Code Online (Sandbox Code Playgroud)

或对象:

aObj := TObjectHash.Create;
aObj['color'] := TBlueClass.Create;
bcBlue:=(aObj.Items['color'] as TBlueClass);
ShowMessage(bcBlue.Name); // Blue (supposing the TBLusClass as a Name property...
Run Code Online (Sandbox Code Playgroud)

希望它既适合您,也适合我.

PS我认为Ares AudioGalaxy项目也使用它.

  • 我已将其从Google缓存中复制到此处:http://pastebin.com/HkWAGFbe.希望Ciaran不介意. (2认同)

Ger*_*lí- 5

我已经测试了TStringList和一些THashTable实现,并且两个实现之间的差异很小,并且在大多数情况下,TStringList(具有双声道排序实现)比THashTable更有效.
对于少量值,TStringList比Hash更快,并且对于大量值,您必须找到用于最小化冲突的复杂散列函数,并且这种复杂性降低了HashList的效率.

必须使用StringList 的Object指针来存储所需的所有信息(第二个字符串).

问候.