|
|
|
|
[Вопрос] Научите правильно сохранять данные в Hashtable
|
|
MindSmiLe | Дата: Пятница, 13 Января 2012, 09:19:54 | Сообщение # 1 |
1 уровень
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Блокировки:
| Обесните мне что за что отвечает как использовать эту hashtable Это для меня густой лес Code SaveUnitHandle(Hashtable,integer parentKey,integer childKey,unit whichUnit) и тоже
|
|
|
|
Ty3uK | Дата: Пятница, 13 Января 2012, 09:53:01 | Сообщение # 2 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Для сохранения юнитов, декораций, эффектов, групп и любых других объектов лучше юзатьCode call SaveAgentHandle(hashtable, parent, child, handle) где hashtable- переменная хэштаблицы, parent- родительская ячейка, child- дочерняя ячейка, handle- твой объект, который ты сохраняешь. Т.е, если проводить аналогию с, допустим, Microsoft Office Excel, то родитель- строка, дочерний- столбец. Как объяснить лучше- хз
Добавлено (13 Январь 2012, 09:30:57) --------------------------------------------- Родитель, дочерняя- целые числа. Далее у нас идет выгрузка значений. Для каждого хэндла (объекта) существует отдельная функция (хотя есть и универсальная LoadAgentHandle(), но она работает медленнее). Рассмотрим это на примере выгрузки уже сохраненного юнита сразу в локальную переменную:Code local unit u = LoadUnitHandle(udg_Hash, 0, 0) где Hash - наша таблица. Надеюсь, все понятно. Если что- пиши
Добавлено (13 Январь 2012, 09:53:01) --------------------------------------------- И бтв, правильно писать сохрАнять
|
|
|
|
MindSmiLe | Дата: Пятница, 13 Января 2012, 10:30:05 | Сообщение # 3 |
1 уровень
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Блокировки:
| Вроде все понел
Code И бтв, правильно писать сохрАнять
да я прочитал когда создал тему исправить то нельзя
|
|
|
|
Ty3uK | Дата: Пятница, 13 Января 2012, 10:32:23 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ну и понял через я пишется
|
|
|
|
SirNikolas | Дата: Пятница, 13 Января 2012, 12:38:10 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Ty3uK) хотя есть и универсальная LoadAgentHandle(), но она работает медленнее Нет такой функции. А даже если бы и была, как бы ты приводил типы (agent -> unit, например)? Да, и вот статья.
|
|
|
|
Ty3uK | Дата: Пятница, 13 Января 2012, 12:45:33 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Ну, писал с телефона, поэтому и перепутал, извините
|
|
|
|
lawson | Дата: Пятница, 13 Января 2012, 17:04:51 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (MindSmiLe) Обесните мне что за что отвечает как использовать эту hashtable Сохранение в хеш можно представить как запись значений в переменную - массив: переменная[ячейка] = значение Так же и записываются и данные в хеш, только вместо переменной используется КЛЮЧ для идентификации записываемых данных, далее как и в переменой-массиве используется ячейка в которую записываются данные, и в самом конце записывается сами данные в таблицу.Quote (Ty3uK) call SaveAgentHandle(hashtable, КЛЮЧ, ЯЧЕЙКА, ЗНАЧЕНИЕ) Выгрузка происходит по такому же принципу только в конче не указываются те данные которые ты сохранил а лишь ячейка в которых хранится значение.Quote (Ty3uK) LoadUnitHandle(udg_Hash, КЛЮЧ, ЯЧЕЙКА)
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 13 Января 2012, 17:06:38 |
|
|
|
MindSmiLe | Дата: Пятница, 13 Января 2012, 17:11:34 | Сообщение # 8 |
1 уровень
Группа: Пользователи
Сообщений: 9
Награды: 0
Репутация: 0
Блокировки:
| lawson, понятней всех объеснил, а потом данные которые сохранид удалят ненадо?
|
|
|
|
lawson | Дата: Пятница, 13 Января 2012, 17:18:18 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (MindSmiLe) а потом данные которые сохранид удалят ненадо Если данные в таблице тебе больше не нужны, да их нужно удалять. Есть два метода: 1) Удаление всех данных из таблицы по КЛЮЧУ - FlushChildHashtable(hashtable, КЛЮЧ) - данный метод очистит все занятые ячейки таблицы по КЛЮЧУ. 2) Удаление данных из таблицы по КЛЮЧУ из ячейки - А вот здесь уже не помню как точно. Данный метод очистит не все ячейки таблицы, как в методе выше, а только определенную.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 13 Января 2012, 17:22:35 |
|
|
|
SirNikolas | Дата: Пятница, 13 Января 2012, 19:57:51 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (lawson) А вот здесь уже не помню, как точно. Есть пять функций:Code native RemoveSavedInteger takes hashtable table, integer parentKey, integer childKey returns nothing native RemoveSavedReal takes hashtable table, integer parentKey, integer childKey returns nothing native RemoveSavedBoolean takes hashtable table, integer parentKey, integer childKey returns nothing native RemoveSavedString takes hashtable table, integer parentKey, integer childKey returns nothing native RemoveSavedHandle takes hashtable table, integer parentKey, integer childKey returns nothing Плюс можно полностью удалить хэш-таблицу:Code native FlushParentHashtable takes hashtable table returns nothing
|
|
|
|
Ty3uK | Дата: Пятница, 13 Января 2012, 20:17:31 | Сообщение # 11 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Неужели сказанное Лавсом чем-то отличается от сказанного мною? Бтв, Ник, последняя функция не удаляет, а чистит всю таблицу
|
|
|
|
SirNikolas | Дата: Суббота, 14 Января 2012, 11:39:21 | Сообщение # 12 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Ty3uK) Неужели сказанное Лавсом чем-то отличается от сказанного мною? Цветовые коды и понятные ассоциации.Quote (Ty3uK) Бтв, Ник, последняя функция не удаляет, а чистит всю таблицу Чистка + удаление, насколько я знаю. Во всяком случае, в статье написано, что после этой процедуры хэш нужно инициализировать заново. Чем не удаление?
|
|
|
|
Ty3uK | Дата: Суббота, 14 Января 2012, 11:41:57 | Сообщение # 13 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Окей, не буду спорить. С телефона цветом выделять слегка неудобно
|
|
|
|
|
|
|
|
|
|
|