AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi IInterface und TInterfaced Object richtig nutzen
Thema durchsuchen
Ansicht
Themen-Optionen

IInterface und TInterfaced Object richtig nutzen

Ein Thema von Thorus · begonnen am 22. Aug 2006 · letzter Beitrag vom 22. Aug 2006
 
Thorus

Registriert seit: 3. Jul 2004
23 Beiträge
 
Delphi 2005 Personal
 
#1

IInterface und TInterfaced Object richtig nutzen

  Alt 22. Aug 2006, 08:59
Hallo,

ich habe mir in Delphi.NET eine Liste selbergeschrieben. Dort hatte ich auch keine Probleme mit Interfacen und die vermischen mit Objecten. Nun brauche ich die gleiche Liste aber in Delphi 32, wo das compilieren nicht fehlerfrei ging. Daher musste ich einiges ändern, aber ein großen Fehler habe ich noch, wo ich keine praktische Lösung weiß. Ich habe schon im Forum gesucht, aber so das richtige noch nicht gefunden.

Der wesentliche Punkte ist, dass ich die Elemente der Liste mit einem Interface verinbart hat. Also es können nur Objekte in die Liste gefügt werden, welche das Interface IElem (selbst gemacht) implementieren.
Ich betrachte jetzt nur eine Methode von IElem, weil es ja nur ums Prinzip geht.

Code:
IElem = interface(IInterface)
  function Equals(e: IElem): Boolean;
end;
TElemStr = class(TInterfacedObject,IElem)
private
  Content: string;
public
  function Equals(e: IElem): Boolean;
end;
...
function TElemStr.Equals(e: IElem): Boolean;
begin
  Result := False;
  if e is TElemStr then
    if (e as TElemStr).Str = Content then
      Result := True;
end;
Die Implementation von Equals funktioniert nur bei .NET.
Das Problem ist, dass ich Interfaces und Objekte nicht einfach so vergleichen kann.
Es ist aber wichtig, dass der Parameter e das Interface IElem implementiert hat. Also e soll ja ein Objekt sein.

Ich hatte probiert, statt e: IElem zu schreiben e: TInterfacedObject, aber das ist auch nicht was ich möchte, weil man ja nicht x-beliebige Objekte übergeben können soll.

Ich hatte versucht so was wie TInterfacedObject zu erstellen, also TInterfacedElem, aber erstens weiß ich nicht so recht wie das geht und zweitens brauch ich ja in der Deklaration von IElem dann den Typ TInterfacedElem als Parameter, welcher das IElem benutzt, was ja nicht geht.

Weiß jemand eine Lösung?

Gruß
Thorus
  Mit Zitat antworten Zitat
 


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 14: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