Russian Qt Forum

Программирование => Общий => Тема начата: Igors от Сентябрь 25, 2015, 11:50



Название: Ссылка в постороннем файле
Отправлено: Igors от Сентябрь 25, 2015, 11:50
Добрый день

Есть объект класса A который может иметь любое число объектов класса B. При (де)сериализации A он сериализует также и всех своих B. Пользователь свободно добавляет/удаляет/редактирует B принадлежащих A.

И вот появился "файл расчетов" который приложение должно писать/читать. Никакого отношения к сериализации он не имеет, сами объекты в нем не хранятся. С точки зрения пользователя

- открыл окно объекта А и выбрал в нем какие-то B
- нажал бубочку, расчет выполнен (может длиться любое время) и сохранен в файле
- теперь результатами расчета можно пользоваться. При этом должны задействоваться те самые B что были выбраны для расчета

Каким образом идентифицировать B в файле учитывая что список B в любое время может быть изменен юзером?

Спасибо


Название: Re: Ссылка в постороннем файле
Отправлено: qate от Сентябрь 25, 2015, 13:34
Каким образом идентифицировать B в файле учитывая что список B в любое время может быть изменен юзером?

UUID ?


Название: Re: Ссылка в постороннем файле
Отправлено: Igors от Сентябрь 25, 2015, 14:24
Каким образом идентифицировать B в файле учитывая что список B в любое время может быть изменен юзером?

UUID ?
Еще одна "сестра (таланта)" :) Что ID? Как (в какой момент) его создавать, что с ним будет при copy/pate/delete/undo и.т.д? Тут есть о чем поговорить...


Название: Re: Ссылка в постороннем файле
Отправлено: qate от Сентябрь 25, 2015, 14:41
как же можно ответить если задача выражена нечетко ? )
очень похоже что к исходной задача хочется прикрутить непредусмотренное ранее, значит будут костыли

UUID будет определять объект B, если в нем нет уникальных полей
Изменил B - новый UUID


Название: Re: Ссылка в постороннем файле
Отправлено: Old от Сентябрь 25, 2015, 15:04
А что должно произойти, если пользователь  после сохранения расчета удалит из файла A все объекты B?


Название: Re: Ссылка в постороннем файле
Отправлено: Igors от Сентябрь 26, 2015, 15:56
как же можно ответить если задача выражена нечетко ? )
А что тут "нечеткого"? Может только то что задача незнакома, как и "правельный ответ"?  :)

UUID будет определять объект B, если в нем нет уникальных полей
Изменил B - новый UUID
Ну менять (редактировать поля B) можно как угодно, это ничего не меняет. Вариант с ID конечно напрашивается, но что делать если

1) Объект A копируется (конечно со всеми принадлежащими ему B). Причем всяко-разно, напр через clipboard

2) Файл расчетов применяется к др объекту A (возможно копии "оригинала", но может и нет).

Я понимаю что неизбежны случаи когда ссылка в файле становится невалидной. Это нормально, тогда код использования уже решит, продолжить ли работать без этой ссылки или выдать ошибку. Однако совершенно неясно, в плюс то ID или в минус