AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Freigeben von Objekten einer Function

Ein Thema von ScharfeMietze · begonnen am 23. Sep 2018 · letzter Beitrag vom 25. Sep 2018
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.196 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Freigeben von Objekten einer Function

  Alt 24. Sep 2018, 10:59
Hi Scharfe Mieze
Zitat:
ich habe ein generische OBjektliste vom Typ TTGMessage , in der sich entweder eine Message oder eine edited_message befindet.(alle sind vom Typ TTGMessage)
Objectlisten haben ein Boolean-Property OwnsObjects, mit dem du bestimmen kannst, dass sie sämtliche aufgelisteten Objekte freigibt, wenn sie selbst freigegeben wird.

Aber Vorsicht: Objekte, die sich in der Liste befinden und die beim Erzeugen einem Owner zugewiesen werden, wollen von diesem und allenfalls der Objektliste freigegeben werden.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#2

AW: Freigeben von Objekten einer Function

  Alt 25. Sep 2018, 10:36
{ The OwnsObjects property is set by default to true -- the list will free the owned objects automatically. }
Genau das ist ja der Hintergedanke.mich eben nicht drum kümmern zu müssen.


Was mir manchmal nicht schlüssig ist wann wer wie welches objekt besitzt und wann es durch OwnsObjects befreit wird ..
Was ist wenn ich das Result der fuction einer weiteren objektliste übergebe? Wer hat dann wann was?

Hintergrund ist der, das später in (verschiedenen) Task je nach Inhalt weiterverarbeitet werden soll. Die Task sollen ihre eigenen Objektlisten haben.

Daher kann eine TGMessage aus den originalen Telegramm results (FTGResults(objekliste)) in weiteren/mehreren Objektlisten auftauchen.
Die Task prüfen Quasi ob ihre Objektliste was enthält und wenn ja arbeiten sie es ab.
So ist bisher mein Plan.

Daher hoffe ich das ihr mir die Frage beantworten könnt wann wer Besitzer des Objekts aus der "Hauptliste" FTGResults (generic Object Liste) ist und wann es wie durch OwnsObjects befreit wird. Wenn es immer FTGResults ist, wäre es einfach da ich diese dann einfach erst befreie wenn alle Task fertig sind.... Mindmap siehe Bild
Angehängte Grafiken
Dateityp: png Download.png (38,5 KB, 15x aufgerufen)

Geändert von ScharfeMietze (25. Sep 2018 um 10:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
793 Beiträge
 
#3

AW: Freigeben von Objekten einer Function

  Alt 25. Sep 2018, 10:55
Wenn du die weiteren Listen auch auf OwnsObjects stellst hast du ein Problem, da die erste Liste, die freigegeben wird (oder wenn ein Objekt aus der Liste gelöscht wird) das Objekt löscht und die andere Liste dann ins Leere greift. Es gibt also nicht sowas wie einen (Haupt-)Eigentümer.

Funktionieren würde das nur bei den mobilen OS, dort wird das über Referenzzählung gelöst, erst nach dem Auflösen der letzten Referenz wird freigegeben.
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#4

AW: Freigeben von Objekten einer Function

  Alt 25. Sep 2018, 19:43
Gut, das ist ja planbar. Da Telegramm max 100 Updates ausspuckt kann es mit einer Referenzzählung versehen werden pro Aufgabe zähle hoch, ist die Aufgabe erledigt ziehe 1 ab ist der Referenzzähler 0 lösche es aus der Hauptliste.
die restlichen listen bekommen ownsobject false.....
dann muss auch nur die Hauptliste permanent bestehen ..
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.516 Beiträge
 
Delphi 12 Athens
 
#5

AW: Freigeben von Objekten einer Function

  Alt 25. Sep 2018, 20:17
Außerdem:

Warum ignorierst du böswillig die Fehlermeldungen deines Compilers?

Create, bzw. irgendeine Initialisierung gehört IMMER vor das Try, denn sonst ist diese Variable im Except/Finally nicht initialisiert, welches dir der Compiler auch gesagt hat.

Delphi-Quellcode:
Result := TTGMessage.Create;
try
  ...
except // ebenso bei finally
  Result.Free;
  raise;
end;
Delphi-Quellcode:
Result := nil;
try
  Result := TTGMessage.Create;
  ...
except // ebenso bei finally
  Result.Free;
  raise;
end;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#6

AW: Freigeben von Objekten einer Function

  Alt 25. Sep 2018, 23:43
Hmpf... Da bin/war ich beim markieren und "umgeben mit" schlicht zu hoch gerutscht.
natürlich danke für den Hinweis
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz