AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Interface Listen

Ein Thema von kaju74 · begonnen am 6. Okt 2010 · letzter Beitrag vom 7. Okt 2010
Antwort Antwort
kaju74

Registriert seit: 22. Okt 2003
185 Beiträge
 
#1

Interface Listen

  Alt 6. Okt 2010, 15:43
Delphi-Version: 2010
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:
TItem = class(TCollectionItem)
  <Deklaration der Eigenschaften & Methoden>
end;

TItems = class(TCollection)
  <Implemntierung der Add/Delete/... Methoden>
end;
Nun möchte ich u.a. die neuen Sprachfeatures von D2010 nutzen und bei dieser Gelegenheit auf Interfaces setzen:

IItem = interface(...) bzw.

IItems = interface(...) D.h: Über eine Instanz von IItems möchte ich auf die einzelen Item-Elemente via "for each" zugreifen. Soweit ich
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

Geändert von mkinzler ( 7. Okt 2010 um 12:33 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt; weitere Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

AW: Interface Listen

  Alt 6. Okt 2010, 16:12
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
kaju74

Registriert seit: 22. Okt 2003
185 Beiträge
 
#3

AW: Interface Listen

  Alt 6. Okt 2010, 16:27
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
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

AW: Interface Listen

  Alt 6. Okt 2010, 17:01
gibt es denn keine TInterfaceList??

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
kaju74

Registriert seit: 22. Okt 2003
185 Beiträge
 
#5

AW: Interface Listen

  Alt 7. Okt 2010, 11:10
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
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Interface Listen

  Alt 7. Okt 2010, 11:23
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
Mit Generics ginge es theoretisch (Code kompiliert in Delphi 2009, aber ungetestet!):

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.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 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