Autor Beitrag
Geri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 78

XP
RAD Studio XE pro
BeitragVerfasst: Mi 12.08.09 14:42 
Hallo zusammen


Ich habe mehrere Klassen, welche von einander abgeleitet sind. Jede der Klasse wurde mit einem Copy-Constructor ausgesattet.
Nun habe ich in einer Liste Instanzen der verschiedenen Klassen und möchte eine Kopie der gesamten Liste erstellen

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
type
    TBaseClass = class
               mValue:Integer;
               constructor.create(aValue);overload;
               constructor.Create(aINstance:TBaseClass);overload;  // copy Konstruktor
            end;

    TClassB = class(TBaseClass)
               constructor.Create(aInstance:TBaseClass);overload// copy Konstruktor
            end;

    TClassC = class(TBaseClass)
               constructor.Create(aInstance:TBaseClass);overload;  // copy Konstruktor
            end;
   
var BaseList:Tlist;
    i:Integer;
    copyList:Tlist;
    Element:TBaseClass;
begin
  BaseList:=TList.Create();
  BaseList.add(TBaseClass.Create(123));
  BaseList.add(TClassB.Create(456));
  BaseList.add(TClassC.Create(789));
  ..

// und nun die Kopie der gesamten Liste erstellen
  CopyList:=TList.Create();
  for i:= 0 to BaseList.Count-1 do
  Begin
    Element:=BaseList[i]
    if Element.classtype = TBaseClass then CopyList.add(TBaseClass.Create(Element)) else
    if Element.classtype = TClassB then CopyList.add(TBaseB.Create(Element)) else
    if Element.classtype = TClassC then CopyList.add(TBaseC.Create(Element)) else
    Begin
      // error, unkown class
    end;
  end
End;


Gibt es vielleicht eine Möglichekeit die Abfrage der gesamten Klassen zu vermeiden und gleich den richtigen Constructor aufzurufen?

Etwas ähnliches wie vielleicht:
ausblenden Delphi-Quelltext
1:
   CopyList.Add((Element.ClassType).Creat(Element)) ???					

Fehlen mir evtl. in den Konstruktoren nur ein paar overrides :)?

Vielen Dank für ein paar hilfreiche Tipps im Voraus

Geri
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 12.08.09 14:46 
Moin!

Du hast schon einen Thread zu dem Thema, bitte da weiter diskutieren. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.