AGB  ·  Datenschutz  ·  Impressum  







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

Interface problem/crash

Ein Thema von TurboMagic · begonnen am 20. Aug 2021 · letzter Beitrag vom 23. Aug 2021
 
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.050 Beiträge
 
Delphi 12 Athens
 
#5

AW: Interface problem/crash

  Alt 22. Aug 2021, 14:26
Bei einer eigenen Klasse, die das Interface implementiert, ist das sehr einfach:
Überschreibe einfach _Release und setze dort einen Haltepunkt.

Eine mögliche Ursache:
Du übergibst ein Objekt direkt über den Aufruf des Konstruktors als konstanten Parameter.
Delphi-Quellcode:
procedure Blub(const AData: IInterface);
...
Blub(TMyClass.Create);
An der Stelle funktioniert die Referenzzählung nicht korrekt, weshalb man die Instanz immer zuerst in eine Interfacevariable speichern muss. Diese Variable kann man dann an die Methode übergeben:
Delphi-Quellcode:
Test := TMyClass.Create;
Blub(Test);
Habe ein wenig damit rumgespielt und folgendes ermittelt:

1. Habe _AddRef und _Release beide überschrieben und darin sowohl einen Breakpoint gesetzt als auch
eine LogCat Logmeldung ausgegeben
2. Beide werden nie aufgerufen
3. Es gibt eine Klasse, die hat ein Feld von der Klasse die das Interface implementiert.
Dem Feld wird mittels <Klassenname>.Create(...); die Objektreferenz zugewiesen und dieses Feld
wird später an den Constructor des Threads übergeben (genauer: das Property davon, welches direkt
auf das Feld durchgreift).

Was nun? Das Interface deckt bisher leider nicht die komplette Funktionalität der Klasse ab.
Man könnte es ggf. erweitern und dann statt einer normalen Objektreferenz für das Feld gleich das
Interface benutzen. Würde das die Sache besser machen?
  Mit Zitat antworten Zitat
 


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 18:44 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