AGB  ·  Datenschutz  ·  Impressum  







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

Referenzen auf ungültige Objekte

Ein Thema von stahli · begonnen am 14. Mär 2011 · letzter Beitrag vom 2. Mär 2012
Antwort Antwort
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#1

AW: Referenzen auf ungültige Objekte

  Alt 3. Nov 2011, 22:57
Zitat:
Hmm, aber dann dürfte man den Zeiger, der auf den Zeiger zeigt nicht mehr einfach freigeben... Lyncht Ihn!
Danke ... aber das wäre in meinem Modell die unterste Schicht, jedes Objekt das erzeugt wird lässt sich von nennen wir es Manager eine eindeutige Nummer zuweisen, übergibt dem Manager seine Adresse und teilt dem Erzeuger statt der Objektinstanz die Nummer mit, im Destroy wendet er sich ebenfalls an den Manager, das sich im Gedankenspiel alle auf den Manager beziehen würden sollte es keine toten Referenzen mehr geben.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.356 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Referenzen auf ungültige Objekte

  Alt 3. Nov 2011, 23:12
Ja , das wäre dann der Ansatz wie von Sir Rufo - es werden keine festen Referenzen auf Objekte verwaltet - oder?
Aber in dem Zusammenhang bilden die Objekte nicht direkt die Datenstruktur ab (Owner und SubObjekte). Oder verstehe ich Dich da falsch?

Bei meiner Lösung kann ich leicht die Mannschaft suchen, in der sich ein Spieler befindet (über die Owners iterieren).
Du müsstest im Spieler eine MannschaftsId verwaltet, wenn ich das richtig interpretiere.

Vermutlich könnte man Deine Lösung aber leichter für eine Datenbankverwendung ausbauen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Referenzen auf ungültige Objekte

  Alt 3. Nov 2011, 23:42
Wozu eine eindeutige Nummer?

Delphi-Referenz durchsuchenTObject.GetHashCode und per Default gibt diese Methode den Objektzeiger zurück, denn der Zeigerinhalt, bzw. die Speicheradresse eines Objektes sind immer eindeutig, da im RAM immer nur ein Objekt n der selben Stelle liegen kann.
Also bracucht sich der Manager nur die Objektreferenzen merken, anstatt zusätzlich noch jeweils eine ID.

Der Manager kann somit, am Ende, auch locker eine einfache TObjectList sein.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Referenzen auf ungültige Objekte

  Alt 4. Nov 2011, 06:08
@himitsu

ich sehe noch nicht was das helfen soll
Delphi-Quellcode:
var
  b:TButton;
  hc:Integer;
begin
  b := Button2;
  hc := b.GetHashCode;
  Caption := IntToStr(Integer(b)) + '-'+IntToStr(Integer(Button2)) + '-'+IntToStr(hc);
  FreeAndNil(Button2);
  Showmessage(IntToStr(Integer(b)) + '-'+IntToStr(Integer(Button2)) + '-'+IntToStr(hc));
  Showmessage(IntToStr(b.GetHashCode));// das hier müsste eigentlich schon knallen
end;
Wenn statt dessen über einen Zwischenzeiger, der über eine Nummer/GUID was auch immer im Manager, das kann durchaus eine Liste(Anrede,Objektzeiger), angesprochen und geprüft wird, die Einträge dort vom Objekt beim Erzeugen/Vernichten hinzugefügt/entfernt werden kann so etwas nicht passieren.

@stahli

Die Owner/Parent was auch immer Struktur bräuchte IMHO nicht verändert werden, in Deinem sp:TSpieler müsste einfach transparent die Managernummer abgelegt werden, alle Zugriffe müssten dann ebenfalls transparent über den Manager abgewickelt werden. Das wäre ein kompletter Sprachumbau, könnte dann aber völlig transparent wie bisher laufen. Zugriffe wie @MySpieler.Irgendwas würden dann freilich nicht mehr funktionieren.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  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 07:56 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