Страница 1 из 1

Хеши в Дельфи

Добавлено: 03 май 2005, 14:02
Absurd
Какие классы выполняют роль хешей (множества и ассоциативные массивы) в Дельфи?

Добавлено: 03 май 2005, 17:02
Zroman
Если я правильно понимаю что такое хеш, то попробуй создать StringList, и обращайся потом к величине по имени как к StringList.values['<имя величины>'].
Например:
StringList.values['ValName']:='value';
приведёт к появления в стринглисте строки "ValName=value"
А обратиться к величине под именем ValName можно так:
x:=StringList.values['ValName'];

Добавлено: 03 май 2005, 17:08
Absurd
А если мне нужны ключи с типом integer? (К примеру)

Добавлено: 03 май 2005, 20:42
Zroman
Тогда не знаю. Попробуй приводить ключи функцией IntToStr.

Добавлено: 04 май 2005, 00:00
Absurd
Попробуй приводить ключи функцией IntToStr.
Не мой стиль.
Ну Наиль, Aik... гуры... ответьте... Должно же быть

Добавлено: 04 май 2005, 00:49
AiK
Absurd, как я могу ответить, если я не знаю? :)
Могу предложить только такой вариант

Добавлено: 13 май 2005, 12:59
LAngel
А если создавать класс потомок TCollection?

Добавлено: 13 май 2005, 13:20
Absurd
1) Потом придется стыковать свой велосипед с чужими велосипедами
2) Этот код мне потом придется поддерживать
3) Даже в таком угробище как С++ есть std::hash_map<KeyType, ValueType, HashFunc, Comparator>

Добавлено: 13 май 2005, 23:06
Eugie
Absurd, нет в Дельфи универсального хэша, увы :( Есть THashedStringList, но он, как следует из имени, работает только со строками в качестве ключей.

А почему нет - понятно: язык сильно типизированный, нет конструктивов подобных шаблонам. Т.е. для каждого типа ключей придется делать отдельный класс.