Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Array mit unterschiedlichen Datentypen

  Alt 4. Nov 2006, 11:28
Zitat von shmia:
Wenn alle Klassen von einer gemeinsamen Basisklasse abgeleitet wurden,
und diese Basisklasse virtuelle Methoden hat ist das kein Problem.
Ausser eventuell bei
Delphi-Quellcode:
Haus1 := THausA.Create(...);
Haus2 := THausB.Create(...);
Haus3 := THausC.Create(...);
Haus4 := THausD.Create(...);
Da wirds wohl nicht ohne weiteren Aufwand kürzer gehen.... Aber für den Rest ist die Erzeugung einer Basisklasse der richtige Weg:

Delphi-Quellcode:
THaus = class(TObject)
protected
   procedure Zeichnen ; virtual ; abstract ;
   procedure TuerAuf ; virtual ; abstract ;
   procedure TuerZu ; virtual ; abstract ;
end ;

THausA = class(THaus)
public
   procedure Zeichnen ; override ;
   procedure TuerAuf ; override ;
   procedure TuerZu ; override ;
end ;
 // THausB usw. analog

implementation
 
procedure THausA.Zeichnen ;
begin
    inherited Zeichnen ;
    // Deine Zeichenroutine für Haus A
end ;

// usw.
Die Häuser würd ich dann nicht in einem Array sondern TObjectList ablegen. Dann sieht dein obiger Code verkürzt so aus:

Delphi-Quellcode:
procedure AlleZeichnen ;
var
  Haeuser : TObjectList;
begin
    HausA := THausA.Create ;
    HausB := THausB.Create ;
    HausC := THausC.Create ;
    HausD := THausD.Create ;

    Haeuser := TObjectList.Create ;
    Haeuser.Add (HausA) ;
    Haeuser.Add (HausB) ;
    Haeuser.Add (HausC) ;
    Haeuser.Add (HausD) ;
    for i := 0 to Haeuser.count-1 do begin
       (Haeuser[i] as THaus).Zeichnen ;
       (Haeuser[i] as THaus).TuerAuf;
       (Haeuser[i] as THaus).TuerZu;
    end ;
end ;
  Mit Zitat antworten Zitat