Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Interface (https://www.delphipraxis.net/104895-interface.html)

BenjaminH 12. Dez 2007 13:23


Interface
 
Hallo,
ich möchte mich mal ein bisschen mit Interfaces beschäftigen. Ich habe aber irgendwie garkeinen Plan davon.
Kennt jemand ein Tutorial dafür? Ich habe keines gefunden.

Das Konzept von Interfaces ist mir auch nicht so ganz klar.
Vielleicht kann mir da ja jemand helfen?

Vielen Dank,
Benjamin

Matze 12. Dez 2007 13:32

Re: Interface
 
Hallo Benni,

das wäre vielleicht etwas für dich (betrachte auch die folgenden Links): Interfaces und Delegation durch "implements".

Grüße

vlees91 12. Dez 2007 13:32

Re: Interface
 
Wenn ich mich nicht irre, hilft das weiter: [google]"Modellierung und Systementwicklung"[/google]

grml, warum werden die "'s aus dem suchquery entfernt

BenjaminH 12. Dez 2007 13:38

Re: Interface
 
Danke! Das ging ja mal wieder superschnell.
@Matze: Perfekt, jetzt werde ich wissen, wie das funktioniert.
@vlees: Perfekt, jetzt werde ich wissen, wofür ich das brauch.

Warum habe ich das nicht gefunden? :gruebel:

So, jetzt ergibt sich folgende Frage:
Was bringt einem der GUI String, dabei?
In den beiden Links aus dem Thread, den Matze verlinkt hat, wird darauf nicht eingegangen.

sirius 12. Dez 2007 13:58

Re: Interface
 
Zitat:

Zitat von BenjaminH
Was bringt einem der GUI String, dabei?
In den beiden Links aus dem Thread, den Matze verlinkt hat, wird darauf nicht eingegangen.

Du meinst GUID :zwinker:
Das bringt dir, dass du eine GUID vorgeben kannst, ansonsten bekommst du IMHO eine vom Compiler verpasst. Damit hat dein Interface eine weltweit einmalige ID und man kann es darüber finden/ansprechen/ignorieren.

xaromz 12. Dez 2007 14:01

Re: Interface
 
Hallo,

ich hatte da auch mal was geschrieben.

Gruß
xaromz

BenjaminH 12. Dez 2007 14:07

Re: Interface
 
So, nächstes Problem:
Ich habe ein Interface von einem anderen abgeleitet:
Delphi-Quellcode:
IShape=Interface
...
IRect=Interface(IShape)
..
TRect=class(TInterfacedObject, IRect)
Var Shape:IShape;

Shape:=TRect.Create
Ich kann IShape ein Objekt, das von einem Nachfahren von IShape abgeleitet ist, nicht zuweisen?
Warum?

Viele Grüße,
Benjamin
[Edit]@xaromz: Danke, das Thema wird ja immer genialer.

Elvis 12. Dez 2007 14:31

Re: Interface
 
Zitat:

Zitat von BenjaminH
Delphi-Quellcode:
IShape=Interface
...
IRect=Interface(IShape)
..
TRect=class(TInterfacedObject, IRect)
Var Shape:IShape;

Shape:=TRect.Create
Ich kann IShape ein Objekt, das von einem Nachfahren von IShape abgeleitet ist, nicht zuweisen?
Warum?

Die Interfaces müssen GUIDs haben, die GUID wird nicht autom. erzeugt (@Jesus).
Nur über die GUID wird der Typ des Interfaces gehandhabt.
Außerdem musst du beim Implementieren eines Interfaces auch sämtliche Vorfahren dieses Interfaces angeben, die du implementieren willst.
Das nervt wie Hölle, aber ohne gates nicht...

BenjaminH 12. Dez 2007 14:37

Re: Interface
 
ok, damit kann ich leben.
Die GUIDs werden dann also zum unterscheiden der Interfaces verwendet. So wie bei xaromz mit Supports.
Haben sie noch eine andere Funktion?

Elvis 12. Dez 2007 14:45

Re: Interface
 
Zitat:

Zitat von BenjaminH
Haben sie noch eine andere Funktion?

Man kann einen Interfacetypen als GUID benutzen.
also so
Delphi-Quellcode:
var
  eineGuid : TGuid;
begin
  eineGuid := IRect;
end;
Damit wiederum kann man ziemlich coole Dinge bauen, wie Dictionaries, die pro GUID eine Factory haben oder was-weiß-ich-noch-alles...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr.
Seite 1 von 2  1 2      

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