Size: a a a

2020 February 08

SB

Sergey Bodrov in Delphi & Lazarus
Либо там где-то аварийный выход через halt()
источник

DB

Dmitry Belkevich in Delphi & Lazarus
тут еще вопрос - нужен ли инстанс этого класса один на форму или достаточно одного на юзера или даже вообще одного на всё приложение. если так - то можно его создавать и разрушать либо в TUniMainModule либо вообще в TUniServerModule
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Kit Bayun
constructor create;
    destructor Destroy;
 end;

а здесь нужен override?
На create override может быть не нужен, а на destroy точно нужен
источник

AS

Alexey Shumkin in Delphi & Lazarus
Kit Bayun
Специфика приложения UniGUI такова, что Destroy модуля может выполниться при перезагруке страницы, т.е. после создания модуля, я уже пытался... не знаю как это объяснить
А это не документировано?
источник

AS

Alexey Shumkin in Delphi & Lazarus
Kit Bayun
constructor create;
    destructor Destroy;
 end;

а здесь нужен override?
виртуальные методы обычно всегда надо перекрывать (override). Если этого не делать, то компилятор даже будет подсказки выдавать (по крайней мере, последние его версии)... Но кому нужны подсказки компилятора? их же так много, что на них смотреть? Что там может быть важного?
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Alexey Shumkin
виртуальные методы обычно всегда надо перекрывать (override). Если этого не делать, то компилятор даже будет подсказки выдавать (по крайней мере, последние его версии)... Но кому нужны подсказки компилятора? их же так много, что на них смотреть? Что там может быть важного?
Он точно не будет предупреждать, если ты не переопределишь destructor, а вызываться он не будет
источник

KB

Kit Bayun in Delphi & Lazarus
Геннадий Малинин
На create override может быть не нужен, а на destroy точно нужен
добавил override; Destroy; вроде помогло
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
По поводу проблем с утечками, возникла у меня идёя. Возможно костыль, но просто хочу поделиться. Ещё не продумал до конца эту идею, но это детали.

В общем, это подражать классу TComponent, т.е. всегда в конструкторе указывать родителя. Родителем будет особый класс, который инициализируем и уничтожаем модулем (init.., final...). Родитель уничтожит все дочерние объекты как TComponent.
Сильно не пинайте, придумал только что.
источник

KB

Kit Bayun in Delphi & Lazarus
Dmitry Belkevich
тут еще вопрос - нужен ли инстанс этого класса один на форму или достаточно одного на юзера или даже вообще одного на всё приложение. если так - то можно его создавать и разрушать либо в TUniMainModule либо вообще в TUniServerModule
та сейчас это не важно, думаю, что один на пользователя хватит, исходные данные для списка меняются редко
источник

KB

Kit Bayun in Delphi & Lazarus
Alexey Shumkin
inherited забыл
override забыл :)
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Kit Bayun
override забыл :)
Я тоже так пару раз обжигался
источник

KB

Kit Bayun in Delphi & Lazarus
Alexey Shumkin
виртуальные методы обычно всегда надо перекрывать (override). Если этого не делать, то компилятор даже будет подсказки выдавать (по крайней мере, последние его версии)... Но кому нужны подсказки компилятора? их же так много, что на них смотреть? Что там может быть важного?
вот как раз при отсутствующем override у деструктора и не выдал :(
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Kit Bayun
вот как раз при отсутствующем override у деструктора и не выдал :(
А у TObject Destroy как раз vitrual)
источник

KB

Kit Bayun in Delphi & Lazarus
George Bakhtadze
а при вызове .Clear() точно происходит очистка объектов? или только при .free()?
только что проверил - достаточно просто TObjectDictionary.free
источник

KB

Kit Bayun in Delphi & Lazarus
Геннадий Малинин
А у TObject Destroy как раз vitrual)
??
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
class = TObject
источник

KB

Kit Bayun in Delphi & Lazarus
я что-то ещё забыл?
источник

KB

Kit Bayun in Delphi & Lazarus
всё равно не понял
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Kit Bayun
я что-то ещё забыл?
Тебе сказали, что методы vitrual нужно переопределять override, так?
источник

KB

Kit Bayun in Delphi & Lazarus
ага
источник