![]() |
AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren
Danke für eure Tips. Ich habe bestätigt bekommen, was ich so zu wissen geglaubt habe, aber trotzdem nochmal absichern wollte.
Bei vielen Properties wird leider aus dem "nur nur für die "..neuen" Eigenschaften..." etwas mehr und es geht eher um die laufenden Pflege. Dass jeder auch daran denkt dass da noch ein Assign gepflegt werden muss. Ein klein bisschen hatte ich die Hoffung, dass es irgendwo noch eine Möglichkeit gibt, den Zeiger auf Instanz1.1 so zu ändern, dass er auf Instanz1.2 weiter leitet. |
AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren
Delphi-Quellcode:
:angle:
TAbg = class(TBasis)
procedure Assign(Source: TPersistent); {virtual;} overload; Zitat:
aber nja. oder ein Objekt im Object, wo sich das innere Objekt tauschen lässt. |
AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren
Zitat:
Nur unsauber oder falsch? |
AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren
Das Delphi-eigene Assign ist in TPersistent deklariert und bildet somit schon mal ein Grundgerüst. Dort sind Assign und AssignTo virtual deklariert und können dann in abgeleiteten Klassen überschrieben und mit Leben gefüllt werden. Da deine Klassen nicht von TPersistent abgeleitet sind, hast du da natürlich freie Wahl.
|
AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren
Dort war nur "falsch", dass es in TBasis virtual war und im Nachfahren nochmal virtual,
also verdeckt, anstatt überschrieben. |
AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren
Das zweimalige Virtual hatte ich nach deinem Hinweis gesehen. Nur bei der generelle Verwendung war ich mir unsicher.
|
AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren
ich habe mir jetzt nicht alle Vorschläge durchgelesen...aber wären Interfaces nicht dafür geeignet? Das Objekt wird erstellt, einer Interface-Variablen zugeordnet, in der anderen Liste einer anderen Interface-Variablen zugeordnet usw...bei Änderung des Objekts ist es dann in allen Instanzen sichtbar.
|
AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren
Ich habe (wenn ich das Problem richtig verstehe) in einem ähnlichen Fall einen Pool eingerichtet, der meine Objektinstanzen verwaltet - jede Instanz einmalig.
In buisinessbezogenen Listen werden dann nur Referenzen auf diese Objekte verwaltet (statt TObjectList dann entsprechend TList verwenden). Drei Zugriffsmöglichkeiten sehe ich: - direkter Zugriff auf Objktinstanzen - Zugriff über Interfaces - Zugriff über Guids (der Pool muss dann eine binäre Suche unterstützen) |
AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren
Hallo zusammen,
für mich ist der Thread gelöst. Umstellung auf Instanzen oder Pooling sind aktuell keine Lösung. Die Anwendung ist zu umfangreich und damit der Eingriff zu groß. Mein Problem wäre schon damit gelöst, wenn der Teil, der die Änderung vornimmt, auch auf die Liste zugreifen würde. Dann hätte ich gar keine zwei Instanzen. Aber auch das bedeutet Zeit die ich momentan nicht habe. Da war die Synchronisation der notwendigen Felder per Assign schneller implementiert Danke an alle Gerd |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 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