Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Konstruktor/Destruktor - Wie gehts?


Delete - Mi 21.07.04 13:57
Titel: Konstruktor/Destruktor - Wie gehts?
Es geht um die zwei folgenden Klassen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type TAmpel = class
  pos: TPoint;
  procedure SetFarbe(neueFarbe:TAmpelFarbe; cv:TCanvas);
  function GetFarbe(cv:TCanvas): TAmpelFarbe;
  end;

type TAmpelSchaltung = class
  Ampel: Array[1..3of TAmpel;
  procedure Schalten(cv: TCanvas);
  end;


Wie deutlich zu erkennen beherbergt die Klasse TAmpelSchaltung drei Instanzen der Klasse TAmpel. Nun wäre es ja wünschendswert, wenn beim Aufruf von

Delphi-Quelltext
1:
AmpelSchaltung1 := TAmpelschaltung.create;                    

auch automatisch die drei Instanzen von TAmpel erzeugt bzw. beim Aufruf von

Delphi-Quelltext
1:
AmpelSchaltung1.free                    

auch wieder freigegeben werden.

Ich hab schon allerhand mit virtual, override und inherited herumprobiert, aber so richtig geklappt hat es noch nicht, was auch daran liegt, dass ich es bisher nur sehr schemenhaft vertanden habe.
Mir wäre aber sehr geholfen, wenn jemand einfach den obigen Code nach besagten Anforderungen ergänzen würde.


maxk - Mi 21.07.04 14:14


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:
type TAmpel = class  
  pos: TPoint;  
  procedure SetFarbe(neueFarbe:TAmpelFarbe; cv:TCanvas);  
  function GetFarbe(cv:TCanvas): TAmpelFarbe;  
  end;  

 
type TAmpelSchaltung = class  
  Ampel: Array[1..3of TAmpel;  
  procedure Schalten(cv: TCanvas);  
  constructor Create;
  destructor Destroy;
 end

constructor TAmpelSchaltung.Create;
begin
 Ampel[1]:=TAmpel.Create;
end;

destructor TAmpelSchaltung.Destroy;
begin 
 Ampel[1].Free;
end;


// Edit: Ich sehe gerade, dass es sich um drei Ampeln handelt, aber das dürfte ja eigentlich kein Problem sein ;)


Delete - Mi 21.07.04 14:22

Hmm, so einfach ist das also. Naja, vielen Dank.