БД содержит равкоды юнитов, хранится в хэше.
Какие есть варианты проверить содержится ли уже такое значение в БД, кроме перебора?

avuremybe, как тебе такой вариант?
	function HaveItem takes unit shop, integer itemid returns boolean
		return LoadBoolean(ht, GetUnitUserData(shop), itemid)
	endfunction

	function ShopAddItem takes unit shop, integer itemid returns nothing
		if not HaveItem(shop, itemid) then
			//...
			set lastItem = lastItem + 1
			call SaveInteger(ht, GetUnitUserData(shop), lastItem, itemid)
			call SaveBoolean(ht, GetUnitUserData(shop), itemid, true)
			//...
		endif
	endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
21
HaveSavedInteger( hashtable, parentKey, childKey )
С помощью данной функции Вы можете узнать, хранится ли равкод юнита в Вашей хеш-таблице.
26
ScopteRectuS, но ведь в один childKey можно записать только одно значение. Это получается тот же самый ручной перебор.
Да и вообще, эта функция не поможет мне определить, какой равкод записан в эту ячейку.
26
pro100master, что? Какие функции брать?
21
avuremybe, думаю, Вам стоит показать, как у вас реализована БД.
26
ScopteRectuS, а что, через хэш она может быть реализована разными методами?
SaveInteger( hashtable, parentKey, StringHash("I"+I2S(i)), integer)
30
avuremybe, хеш-таблица позволяет сохранять данные, как эти данные в таблице организованы определяет только сам разработчик.
Кроме того, функция StringHash() весьма медленная, лучше использовать GetHandleId() от контекстной сущности.

Касательно вопроса. Как вариант - можно завести массив, который будет хранить каждый childKey и бегать с проверкой по нему.
26
Clamp, то есть вариантов кроме перебора нет?
30
avuremybe, если опишешь, как и для чего используется БД, то мб появится.
28
avuremybe, если бд хранит равкоды то записывай по равкоду в хэш булен
и потом проверяй его
ну а вообще кламп дело говорит
бд в студию
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.