Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 19-10-2019, 11:01:51

Název: Vlastná trieda - Cosi.Create(Self)
Přispěvatel: Stanislav Hruška 19-10-2019, 11:01:51
Nechcem sa starať o zničenie Cosi. Teraz to mám tak, že mu Owner nastavím na aktuálny formulár. Keďže používam podformuláre + k nim jednotky a tak mi tam vznikajú nepríjemné závislosti (priam kruhové odkazy). Týchto závislosti sa chcem zbaviť. Prišli mi na um dve riešenia:
Alebo mám na to ísť ináč?
Název: Re:Vlastná trieda - Cosi.Create(Self)
Přispěvatel: pepak 19-10-2019, 11:23:49
Pokud se nechceš starat o ničení, tak používej interfacy, tam to funguje automaticky.

Kruhové reference s tím nesouvisí. Ty budeš muset vyřešit bez ohledu na technologii, kterou k ničení použiješ.
Název: Re:Vlastná trieda - Cosi.Create(Self)
Přispěvatel: Stanislav Hruška 19-10-2019, 13:05:26
Pokud se nechceš starat o ničení, tak používej interfacy, tam to funguje automaticky.

Kruhové reference s tím nesouvisí. Ty budeš muset vyřešit bez ohledu na technologii, kterou k ničení použiješ.
Ja som tie interfacy akosi podvedome tušil. Akurát, že o nich nič neviem.
Ak to ničenie vyriešim, tak sa nebudem musieť odkazovať na formulár/podformulár. Tak mi tie kruhové referencie nebudú hroziť. Aj to je dôvod na zmenu.
Název: Re:Vlastná trieda - Cosi.Create(Self)
Přispěvatel: Stanislav Hruška 19-10-2019, 13:40:52
Pre istotu upresňujem o čo mi ide. Príklad:
V potomkovi si vytvorím niekoľko strict private TFDQuery. A tie chcem automaticky zničiť priradením vhodného vlastníka. Formulár či podformulár nie je to pravé orechové. Viď hore.
Název: Re:Vlastná trieda - Cosi.Create(Self)
Přispěvatel: pepak 19-10-2019, 14:18:41
Pre istotu upresňujem o čo mi ide. Príklad:
V potomkovi si vytvorím niekoľko strict private TFDQuery. A tie chcem automaticky zničiť priradením vhodného vlastníka. Formulár či podformulár nie je to pravé orechové. Viď hore.
A to proč? Proč ty query nezničí přímo objekt, který je vytváří?To jako že když už jsi investoval čas do toho, že jsi vytvořil konstruktor a v něm založil ty query, tak námaha s vytvořením destruktoru a zavoláním FreeAndNil na tytéž objekty už je příliš mnoho práce?
Název: Re:Vlastná trieda - Cosi.Create(Self)
Přispěvatel: Stanislav Hruška 19-10-2019, 14:46:45
Citace
tak námaha s vytvořením destruktoru a zavoláním FreeAndNil na tytéž objekty už je příliš mnoho práce?
Presne si to trafil ;D  + tam mám kód, ktorý tam nemusí byť. To vieš, my leniví...
Ďalšia vec je, že na to nezabudnem. Ale na to ma upozorní FastMM.
Název: Re:Vlastná trieda - Cosi.Create(Self)
Přispěvatel: pepak 19-10-2019, 15:04:16
No jak myslíš. Podle mě ses ovšem vydal cestou, která je mnohem náročnější a také mnohem rizikovější na chybu. Já bych ti doporučoval dodržovat standardní pravidlo, že objekty ruší ten, kdo je vytvořil. Ale kdo chce kam...
Název: Re:Vlastná trieda - Cosi.Create(Self)
Přispěvatel: Stanislav Hruška 19-10-2019, 15:56:24
Citace
Já bych ti doporučoval dodržovat standardní pravidlo, že objekty ruší ten, kdo je vytvořil.
Už na tom pracujem. Tým sa zbavím aj tých závislostí. Ďakujem Ti za čas.