Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi interface und Type casting (https://www.delphipraxis.net/205917-interface-und-type-casting.html)

t2000 30. Okt 2020 09:49

Delphi-Version: 10.4 Sydney

interface und Type casting
 
Schnelle Frage:

Delphi-Quellcode:
  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;
Darf ist das hier machen?

Delphi-Quellcode:
var
  MeinInterface: ImeinInterface;
begin
  (MeinInterface as TmeinInterface).FFieldVar := 'usw.';
Es funktioniert, aber kann ich die Interface Variable einfacgh auf den Typ casten? (E s ist sichergestellt, dass auch dieser Typ zugewiesen wurde)

Laufen tut es.

Danke

Uwe Raabe 30. Okt 2020 09:53

AW: interface und Type casting
 
Ja, das ist ausdrücklich so gedacht: Umwandeln von Interface-Referenzen in Objekte

t2000 30. Okt 2020 10:03

AW: interface und Type casting
 
Da bin ja dann gerade mal wieder ein wenig zuuu schnell durch die Hilfe gegangen.
Danke.

himitsu 30. Okt 2020 10:13

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.

Rollo62 30. Okt 2020 12:09

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 16:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz