![]() |
Objekte vom Typ TList, Frage dazu
Hallo,
ich habe mir zwei (unterschiedliche) Records definiert und möchte diese als generische Liste verarbeiten. Dazu habe ich sie folgendermassen definiert: ListeRec1 = Tlist<Rec1>; ListeRec2 = TList<Rec2>; Dazu dann zwei Variable liRec1 : ListeRec1; liRec2 : ListeRec2; und diese erzeugt: liRec1:=ListeRec1.create; liRec2:=ListeRec2.create; Ich möchte nun die beiden Variablen jeweils an eine gemeinsame Prozedure übergeben und dort befüllen lassen. Procedure fuelle_list(var liste : liRec1), begin fuelle die Liste; end; Dazu bräuchte ich aber zwei unterschiedliche prozeduren, was ich unschön finde, da beide im grunde das gleiche machen nur mit unterschiedlichen Listen(Records). Lieber wäre mir ich könnte immer die gleiche Prozedur aufrufen und jeweils die eine oder ander Liste übergeben und in der Prozedur irgendwie die jeweilige Liste ansprechen. Ich denke ich müsste einen "generischen" Typ angeben aber meine Versuche dahingehend waren bisher fruchtlos.... Geht das in Delphi und wenn ja, wie ? Danke Karl |
AW: Objekte vom Typ TList, Frage dazu
.. nur ein Gedanke
Delphi-Quellcode:
Grüße
Procedure fuelle_list(var liste : TList<T>),
begin fuelle die Liste; end; Klaus |
AW: Objekte vom Typ TList, Frage dazu
Die beiden Typen müssen den selben Vorfahren haben.
|
AW: Objekte vom Typ TList, Frage dazu
Klaus,
Wenn ich Tlist<T> angebe habe ich ja wieder das gleiche Problem , denn ich müsste dann jeweils TList<Rec1) order TList<Rec2> angeben. Was ich bräuchte ware ein allgemeines Tlist aber da sagt der Compiler : [dcc32 Fehler] test.pas(85): E2010 Inkompatible Typen: 'TList' und 'System.Generics.Collections.TList<AtoDData.Rec1>' Schade. Karl. |
AW: Objekte vom Typ TList, Frage dazu
Bei VAR müssen es sogar die selben Typen sein.
Aber VAR ist garnicht nötig, da nur der Inhalt, aber nicht die Instanz der Liste geändert werden soll, also ja, dann reicht ein gemeinsamer Vorfahre. (auch wenn es bei diser Art Genrics nicht leicht wird ... außer mit TObjectList<T>, da diese "kompatible" T haben müssen) Oder auch die Funktion Methode generisch
Delphi-Quellcode:
procedure TXyz.fuelle_list<T>(Liste: TList<T>);
// bzw. procedure TXyz<T>.fuelle_list(Liste: TList<T>); |
AW: Objekte vom Typ TList, Frage dazu
Willkommen im Club Karl,
Du kannst Deinen QuellCode hier mit Hilfe des Delphi-Symbols (= Helm mit rotem Kamm gleich über der ersten Zeile im Editor) richtig formatieren, damit er besser lesbar ist. Gruß, Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 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