![]() |
AW: Interface und 'normale' Referenz
Zitat:
Da gebe ich dir Recht. Mir selbst ist das suspekt. Besser ein Interface für die benötigten Methoden einführen und nichts anderes als die Interfaces benutzen.
Delphi-Quellcode:
IMachtWasAnderes = interface
procedure WasAnderes; end; Foo = class(TInterfacedObject, IMachtBuh, IMachtWasAnderes) |
AW: Interface und 'normale' Referenz
Zitat:
Zitat:
|
AW: Interface und 'normale' Referenz
Zitat:
Es gibt noch weitere Varianten der Referenzzählung (zum Beispiel bei der TRemotable für Soap). Interfaces in Delphi erlauben Freiheiten bei der Implementierung, die es in anderen Sprachen nicht gibt - wer mag, kann das natürlich auch als Vorteil sehen. |
AW: Interface und 'normale' Referenz
Notfalls erzeugt man sich eine eigene Klasse, die das gewünschte verhalten hat.
|
AW: Interface und 'normale' Referenz
Zitat:
|
AW: Interface und 'normale' Referenz
Hallo,
Zitat:
Delphi-Quellcode:
Gruß
type
IIntf = interface procedure Blubb; end; TIntf = class(TInterfacedObject, IIntf) procedure Blubb; end; procedure bla; var A: IIntf; begin A := TIntf.Create; // Referenz 1 Machwas(A); // keine Änderung end; // hier Referenz 0 -> Objekt wird zerstört procedure Machwas(const B: IInf) // Keine Änderung begin B.Blubb; // hier kann jeder Thread etwas mit dem Interface machen, der Referenzzähler bleibt immer >= 1 end; xaromz |
AW: Interface und 'normale' Referenz
Zitat:
Delphi-Quellcode:
Ist das richtig?
procedure Machwas(const B: IInf);
procedure MachwasNichtConst(B: IInf); procedure bla; var A: IIntf; begin A := TIntf.Create; // Referenz 1 StartThread(Machwas(A)); // keine Änderung end; // hier Referenz 0 -> Objekt wird zerstört. MachWas() hat Pech gehabt. procedure blaAnders; var A: IIntf; begin A := TIntf.Create; // Referenz 1 StartThread(MachwasNichtConst(A)); // Referenz 2 end; // hier Referenz 1 -> Objekt wird nicht zerstört. MachWasNichtConst() hat Glück gehabt. Ich kanns leider nicht mal eben ausprobieren, weil ich in Delphi noch überhaupt keine Ahnung von threads habe. War nur schonmal vorweg gefragt. |
AW: Interface und 'normale' Referenz
Hallo,
Zitat:
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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