LINUX.ORG.RU

GUI, modification flag

 


0

1

Привет. Есть структура, поля которой изменяются в диалоге. Как проще отследить изменения. Создать копию и дёргать сравнение двух структур или можно как-то лучше?

★★★★★

При изменении дергать колбэк или слать событие.

andreyu ★★★★★
()
Последнее исправление: andreyu (всего исправлений: 1)
Ответ на: комментарий от oh-la-la

Ну это понятно, но в итоге всё равно буду сравнивать 2 структуры, как я понял..

UVV ★★★★★
() автор топика
Ответ на: комментарий от UVV

На каждый вид изменения делать отдельный коллбэк, в который передавать информацию, полностью описывающую это изменение.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Да не нужен мне колбэк на каждый вид изменений.

struct
{
   int a;
   int b;
   int c;
} myData;
Вот что-то в ней изменилось, допустим. Узнать об изменениях проще всего создав вторую структуру? Я об этом спрашиваю.

UVV ★★★★★
() автор топика
Ответ на: комментарий от UVV

Можно интерперетировать структуру как массив байт и смотреть по нему дифф, стандартными алгоритмами.

pon4ik ★★★★★
()
Ответ на: комментарий от UVV

Если нет возможности заставить изменятеля дёргать какой-то метод при изменении или взводить флаги с требуемой гранулярностью — то да, я бы сравнивал структуры field-by-field. Но это строго менее эффективно, чем взводить флаги или дёргать коллбэки.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Да на кой сдались мне эти колбэки, если у меня полей 50 в структуре. На каждое поле по колбэку плодить что ли?

UVV ★★★★★
() автор топика
Ответ на: комментарий от UVV

А ежели структура реально настолько проста - то можно использовать заместно неё tuple.

pon4ik ★★★★★
()
Ответ на: комментарий от UVV

Если тебе нужно узнавать о модификации каждого поля по отдельности — да. Копировать структуру из 50 полей и сравнивать их всё равно выйдет менее эффективно.

intelfx ★★★★★
()

Сделай один колбек и передавай туда изменившееся поле.

anonymous
()

В нормальный фреймворках для этого есть Data binding

zenden
()

Я когда-то упоролся и написал расширенные шаблонные объекты-свойства, состоящие из миксинов, которые трекали изменения, умели в commit/restore, умели привязываться к таблице-полю в БД, умели генерить формы ввода для себя, и тп. И городил уже объекты в модели, используя эти свойства как члены.

yoghurt ★★★★★
()
Последнее исправление: yoghurt (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.