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

解決


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

編集    削除