Всем привет.
Долго и старательно гуглил, нигде внятного ответа по Фрипаскалю не нашёл. Есть ответы по Делфи, но об этом позже...
Итак, проблема. Есть класс TFooBar, его экземпляры Foo и Bar. В моём случае они содержат внутри ещё и динамические массивы других определённых тут же классов, но это не меняет сути. Далее:
1. Проделываем всякие операции с Foo;
2. Bar := Foo;
3. Проделываем всякие операции с Bar.
В результате изменяется Foo. Оператор присвоения не создал копию Foo, а просто перевёл указатель Bar на его содержимое. И, как я понял, это норма.
А мне потом понадобятся оба экземпляра, каждый со своими полями. Пока что это пытаюсь решить костылём, через написание функции Clone. Но программа растёт, классов становится всё больше, к ним добавляются предки, родители... К Каждому дописывать по клону? Может быть, я, будучи самоучкой, чего-то не знаю? Как в таких случаях цивилизованные люди поступают?
...Да, на делфи-форумах решение таки есть - через Assign. Но к потомкам TObject оно не применяется, а кто такой TPersistent и зачем он нужен, я чего-то не понял.