Perlのハッシュのようなものは?

解決


ノボル  2006-11-07 10:38:58  No: 23783  IP: 192.*.*.*

PerlにあるハッシュのようなものをDelphiで実現するには、どのようなテクニックを
使えばいいのでしょうか?

P.S.
Perlのハッシュとは、キーと値が対になった項目です。

編集 削除
うんと  2006-11-07 10:42:01  No: 23784  IP: 192.*.*.*

TStringList を使います。Names と Values プロパティーをヘルプで
読んでください。

編集 削除
ノボル  2006-11-07 11:15:24  No: 23785  IP: 192.*.*.*

うんとさん、ありがとうございました。

TStringListは今まで山のように使ってきましたが、このような使い方ができるとは知りませんでした。
ただ、これですと、キーの文字列の中に = が使えないんですねぇ。

編集 削除
ハッシュ  2006-11-07 12:33:40  No: 23786  IP: 192.*.*.*

ソースを参照していただければ分かりますがTStringListのValuesプロパティはIndexOfName()を呼び出しているのですが、このルーチンがベタサーチなので速度的に速くないと思われます。
IniFiles.pasの中でTMemIniFileの使用しているTHashedStringListを利用すればより高速にアクセスできるのではないでしょうか?
THashedStringListはTStringListから派生しているのでTStringListと同じ使い方が出来ます。

編集 削除
sk  2006-11-07 13:16:16  No: 23787  IP: 192.*.*.*

TStringListでもSortedをTrueにしてFindを使って検索すればバイナリサーチするので普通に使うよりは早く使えます
まあ、ちょっと面倒ですが

編集 削除
ハッシュ  2006-11-07 13:27:27  No: 23788  IP: 192.*.*.*

残念ながらTStringListのFindではキーと値の組み合わせのキーでの検索が出来ません。

編集 削除
sk  2006-11-07 14:36:42  No: 23789  IP: 192.*.*.*

ああ、そうでした。すみません勘違いしていました。

編集 削除