![]() |
Delphi-Version: 2010
Interface Listen
Hallo.
Ich versuche gerade ein internen Firmen-Tool (D7) zu modernisieren, dass automatisch eine Persistenzschicht aus Objekt-Listen anhand einer Konfigurationsdatei erzeugt. Dazu wurde - klassisch - auf TCollection und TCollectionItem zurückgegriffen, um Objektlisten abzubilden. Beispiel:
Delphi-Quellcode:
Nun möchte ich u.a. die neuen Sprachfeatures von D2010 nutzen und bei dieser Gelegenheit auf Interfaces setzen:
TItem = class(TCollectionItem)
<Deklaration der Eigenschaften & Methoden> end; TItems = class(TCollection) <Implemntierung der Add/Delete/... Methoden> end;
Delphi-Quellcode:
bzw.
IItem = interface(...)
Delphi-Quellcode:
D.h: Über eine Instanz von IItems möchte ich auf die einzelen Item-Elemente via "for each" zugreifen. Soweit ich
IItems = interface(...)
das verstanden habe, muss ich dazu spezielle Enumeratable-Klassen in der Implementierung benutzen (GetNext, Move...). Irgendwie finde ich aber keine passenden Beispiele, die das mal ganz einfach veranschaulichen, was ich da wie und wo überschreiben bzw. von welchen Interfaces und Klassen ich da ableiten muss. Kann mir da einer auf die Sprünge helfen? Vielen lieben Dank, Marc |
AW: Interface Listen
Interfaces in Delphi sind keine aktiven Komponenten. Soll heißen: Ein Objekt kann genauso ohne ein dazugehöriges Interface funktionieren. Das Interface gibt nur an, welche Funktionen (Methoden/Prozeduren/Funktionen) ein Objekt haben muss. So kannst du verschiedenste Objektklassen an eine bestimmte Funktion übergeben. Es müssen lediglich die im Interface genannten Funktionen vorhanden sein.
Wenn du jetzt alle Objekte durchgehen willst, empfiehlt sich eine TObjectList, in die du alle Objekte reinschreibst. Bernhard |
AW: Interface Listen
Hi..
Ja, aber Interfaces... a) ...dienen u.a. der Beschreibung der (implementierten) Methoden b) ...werden beim Verlassen des Scopes (je nach Deklaration) automatisch freigegeben Daher sollten es schon Interfaces sein. Die Frage ist nur, von welchen Interfaces mal ableitet um eine Enumeration durch die neuen Sprachfeatures zu erhalten. Gruß, Marc |
AW: Interface Listen
gibt es denn keine TInterfaceList??
Bernhard |
AW: Interface Listen
Hallo.
Das schon, aber dessen Verwendung verstehe ich nicht, da ich ja irgendwelche Methoden überschreiben muss, um via "for each" darauf zugreifen zu können. Wie ich das verstehe, muss ich irgendwelche Enumerator-Ableitungen machen, die dann pro Typ das entsprechende Interface entsprechend Typecastet...hmmm...naja, ich probier's dann mal irgendwie hinzukriegen....thx. Gruß, Marc |
AW: Interface Listen
Zitat:
Delphi-Quellcode:
program Project14;
{$APPTYPE CONSOLE} uses Generics.Collections; type MyInterface = interface procedure SayHello; end; InterfaceList = TList<MyInterface>; var IL: InterfaceList; I: MyInterface; begin IL := InterfaceList.Create; for I in IL do begin I.SayHello; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 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