![]() |
Delphi-Version: 10.4 Sydney
interface und Type casting
Schnelle Frage:
Delphi-Quellcode:
Darf ist das hier machen?
ImeinInterface = interface
['GUID'] procedure proc1; procedure proc2; end; TmeinInterface = class(TInterfacedObject, ImeinInterface) private FFieldVar : String; public constructor Create; procedure proc1; procedure proc2; property FieldVar: String read FFieldVar write FFieldVar; end;
Delphi-Quellcode:
Es funktioniert, aber kann ich die Interface Variable einfacgh auf den Typ casten? (E s ist sichergestellt, dass auch dieser Typ zugewiesen wurde)
var
MeinInterface: ImeinInterface; begin (MeinInterface as TmeinInterface).FFieldVar := 'usw.'; Laufen tut es. Danke |
AW: interface und Type casting
Ja, das ist ausdrücklich so gedacht:
![]() |
AW: interface und Type casting
Da bin ja dann gerade mal wieder ein wenig zuuu schnell durch die Hilfe gegangen.
Danke. |
AW: interface und Type casting
Im Prinzip ist das ein "virtuelles" Interface {CEDF24DE-80A4-447D-8C75-EB871DC121FD} in allen Delphi-Objekten, was inzwischen quasi direkt in TObjekt eintegriert ist,
siehe System._IntfAsClass, bzw. TObject.GetInterface, ObjCastGUID. Früher hatte man sich mit einem selbstgebauten Interface beholfen, welches eine GetObject-Methode hatte, und nun kann man es direkt nutzen. |
AW: interface und Type casting
Ich frage das "as" vor dem Nutzen immer mit "is" ab.
Sicher ist sicher |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 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