Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > хеш для массива


Автор: klyaksa 30.6.2011, 19:25
Есть динамический массив array of array of TPoint, нужно как-то сохранить что-то типа хеша массива, чтобы потом можно было сравнить изменился ли массив, без хранения начальной копии массива.
Что можете подсказать? 

Автор: DarkProg 30.6.2011, 19:40
Самый банальный вариант, это при изменении какого-либо значения просто устанавливать значение некоторой переменной типа boolean в значение true или false(кому что по душе и кому что религия позволяет smile )

Автор: klyaksa 30.6.2011, 20:14
Цитата(DarkProg @  30.6.2011,  19:40 Найти цитируемый пост)
Самый банальный вариант, это при изменении какого-либо значения просто устанавливать значение некоторой переменной типа boolean в значение true или false


Просто меняться может в разных местах, причем как отдельный элемент, так и массив 2-го уровня. И везде проверять что новое значение на равно старому не хочется и много лишнего кода...

Автор: DarkProg 30.6.2011, 20:21
У вас два варианта - первый выставляете флаг(переменная типа boolean), значение которой вы будете периодически проверять или вариант с процедуркой.
Объявляете процедуру которая у вас должна выполнится при изменении значения.
Я так понимаю вы вполне себе представляете где у вас должно изменится значение и пишите вызов функции каждый раз как у вас изменяется значение(или может изменится).

Автор: klyaksa 1.7.2011, 08:43
Нет, не пойдет. Даже не столько потому что куча лишнего кода будет... Допустим удалили из массива что-то - отметили что boolean = true, а потом добавили в массив тоже значение, ну может не сразу и массив стал опять как был, а эта boolean будет нам врать, что массив поменялся...
Я вижу выход такой - в переменную сохраняется какое-то значение (как вариант какой-нибудь md5), в конце опять вычисляем подобное и видно - поменялся или нет...

Автор: Snowy 1.7.2011, 10:17
Если массив меняли, значит он менялся.
А то, что в изменённом массиве такие же значения, как в 1998-м году - это как раз не имеет значения.
Я даже более скажу - хороший тон, даже, если на долю секунды изменилось значение, а потом вернулось обратно - правильно считать, что изменение было.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)