Autor Téma: Obsah objektov je po prehodení z jedného zoznamu do druhého neprístupný  (Přečteno 322 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4113
  • Karma: 36
    • Verze Delphi: XE7 professional

Kód: Delphi [Vybrat]
  1. type
  2.     FBackupObjects: TObjectList<TCustomObject>;  // je jedno či to je TObjectList alebo TList
  3.     FObjects: TObjectList<TCustomObject>;
  4. ....
  5. procedure TGlobalVar.RestoreObejcts;
  6. var
  7.   Obj: TCustomObject;
  8. begin
  9.   FObjects.Clear;
  10.  
  11.  
  12.   for Obj in FBackupObjects do  // Ak to sprístupním, tak objekty majú všetky hodnoty neprístupné.
  13.     FObjects.Add(Obj);
  14. end;
  15.  
  16.  
  17. procedure TGlobalVar.BackupObejcts;
  18. var
  19.   Obj: TCustomObject;
  20. begin
  21.   for Obj in FObjects do
  22.     FBackupObjects.Add(Obj);
  23. end;
  24.  
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1721
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Pokud FObjects objekty vlastni, tim Clear je uvolnis a v FBackupObjects Ti zustane kolekce dangling pointeru.
« Poslední změna: 25-02-2019, 13:31:26 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4113
  • Karma: 36
    • Verze Delphi: XE7 professional
Citace
Jedno to byt nemusi, protoze TObjectLis muze objekty vlastnit a tim Clear je uvolnit.
O tom viem. Zariadil som sa podľa toho. Keby som objekty zničil, tak by boli nil. A to nie sú. Ja som len pre istotu vyskúšal oba varianty. Správajú sa rovnako.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1721
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Citace
Jedno to byt nemusi, protoze TObjectLis muze objekty vlastnit a tim Clear je uvolnit.
O tom viem. Zariadil som sa podľa toho. Keby som objekty zničil, tak by boli nil. A to nie sú. Ja som len pre istotu vyskúšal oba varianty. Správajú sa rovnako.

Nerozumim. Ty objekty z FObjects ulozis do FBackupObjects a pak zavolas FObjects.Clear. V pripade, ze FObjects objekty vlastni, objekty se uvolni a Tobe v FBackupObjects zustane kolekce dangling pointeru.

Pochop, ze pokud se ty objekty z jedne kolekce uvolni, zadna jina kolekce o tom nevi. Vlastni tedy ta kolekce FObjects objekty?
« Poslední změna: 25-02-2019, 13:40:50 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4113
  • Karma: 36
    • Verze Delphi: XE7 professional
Nie nevlastní ich.
Kód: Delphi [Vybrat]
  1. FObjects := TObjectList<TCustomObject>.Create(False);
Preto tomu nerozumiem. Objekty som kontroloval priamo vo funkcii RestoreObejcts. Tam sú po priradení v poriadku.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4113
  • Karma: 36
    • Verze Delphi: XE7 professional
Už som to našiel. To je daň za automatizáciu. Že mi to neprišlo na um skôr. Mne sa automaticky ničia. Už viem že ich musím prehodiť až po zničení. A tak tu mám zbytočné príspevky. Dosť ma to štve - tie zbytočné príspevky.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1721
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Zkus pozadat adminy o smazani vlakna. Vim, ze Radek se tomu brani, ale popravde toto konkretni moc uzitku budoucim ctenarum neprinese.
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4113
  • Karma: 36
    • Verze Delphi: XE7 professional
Možno prinesie.
Problém je v tom, že mám hlavný a iný formulár. V hlavnom mám v udalosti OnShow RestoreObjects. V inom formulári v časti OnDestroy mám DestroyObjects.
Ovšem najprv zbehne udalosť MainForm.OnShow a až potom formxx.DestroyObjects
Dá sa to poradie nejako zmeniť? Kde mám správne zavolať MainForm.Show? V inom formulári sa mi to nepodarilo, a umiestnenie po MainForm.ShowModal to tiež nerieši.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2482
  • Karma: 131
    • Verze Delphi: D2007, XE3, DX10
Problém je v tom, že mám hlavný a iný formulár. V hlavnom mám v udalosti OnShow RestoreObjects. V inom formulári v časti OnDestroy mám DestroyObjects.
Ovšem najprv zbehne udalosť MainForm.OnShow a až potom formxx.DestroyObjects
Dá sa to poradie nejako zmeniť? Kde mám správne zavolať MainForm.Show? V inom formulári sa mi to nepodarilo, a umiestnenie po MainForm.ShowModal to tiež nerieši.
Koukam, ze jsi na dobre ceste ta data vyhazet formularu (view) a zalozit model ;-)

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1721
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Problém je v tom, že mám hlavný a iný formulár. V hlavnom mám v udalosti OnShow RestoreObjects. V inom formulári v časti OnDestroy mám DestroyObjects.
Ovšem najprv zbehne udalosť MainForm.OnShow a až potom formxx.DestroyObjects
Dá sa to poradie nejako zmeniť? Kde mám správne zavolať MainForm.Show? V inom formulári sa mi to nepodarilo, a umiestnenie po MainForm.ShowModal to tiež nerieši.

Tohle bych na udalosti nevesel. Mas prece nejakou akci, tak v ni spust co je treba. Nicmene mi vrta hlavou proc delat neco jako backup, restore objektu (jenz ve skutecnosti neni ani zadnou zalohou; de-facto jen presypavas stejne instance). Proc nepredavas jednu a tutez kolekci?
« Poslední změna: 25-02-2019, 14:15:41 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4113
  • Karma: 36
    • Verze Delphi: XE7 professional
Ten model bol viackrát spomínaný. Ale bez nejakého príkladu to nezvládnem. No žiaden, pre mňa vhodný, som nenašiel. Teoretické úvahy a ich grafická prezentácia mi nepomôžu.
Citace
Tohle bych na udalosti nevesel. Mas prece nejakou akci, tak v ni spust co potrebujes.
Možno na niečo prídem. Musím si na to poriadne sadnúť a prípadne si urobiť schému ako mi to vlastne funguje.
Do kelu s tým automatickým formátovaním. Keď som pod napätím, tak si to zbúdam skontrolovať.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.