Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Objekt einer Klasse als Parameter?


gnomecoder - Do 17.02.11 22:46
Titel: Objekt einer Klasse als Parameter?
Hi,
habe heute meine ersten Schritte in objektorientierte Programmierung gewagt.. will aber noch nicht alles klappen.
Wie kann ich ein Objekt einer Klasse einer Prozedur übergeben?

Meine Funktion sieht so aus:
sonne und erde sind objekte der klasse THimmelskörper.

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:
procedure tform1.zeichne();
var
x, y, a : integer;
begin
    setFarbe(clblack); // hintergrund
    image1.Canvas.Rectangle(0,0, image1.Width, image1.height);

    // sonne zeichnen
    setfarbe(sonne.FFarbe);
    x:= sonne.Stelle.X - (sonne.groesse div 2);
    y:= sonne.Stelle.Y - (sonne.groesse div 2);
    a:= sonne.groesse;
    image1.Canvas.Ellipse(x, y,x + a, y+ a);

    // erde zeichnen
     setfarbe(erde.FFarbe);
    x:= erde.Stelle.X - (erde.groesse div 2);
    y:= erde.Stelle.Y - (erde.groesse div 2);
    a:= erde.groesse;
    image1.Canvas.Ellipse(x, y,x + a, y+ a);
    .
    .
    .
    // hier folgen noch jede Menge andere Himmelskörper
end;

jetzt dachte ich ich könnte einfach sowas wie


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure tform1.zeichne(planet : THimmelskoerper);
var
x, y, a : integer;
begin
    setFarbe(clblack); // hintergrund
    image1.Canvas.Rectangle(0,0, image1.Width, image1.height);

   
    setfarbe(planet .FFarbe);
    x:= planet .Stelle.X - (planet .groesse div 2);
    y:= planet .Stelle.Y - (planet .groesse div 2);
    a:= planet .groesse;
    image1.Canvas.Ellipse(x, y,x + a, y+ a);
end;



das scheint aber nicht möglich zu sein.
habs auch schon mit

Delphi-Quelltext
1:
irgendwas = Class of thimmelskoerper;                    

und dann

Delphi-Quelltext
1:
procedure tform1.zeichne(planet : irgendwas);                    

versucht, aber da stimmen dann die typen wieder nicht überein.

also wie gehts richtig? :)

Moderiert von user profile iconMartok: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Do 17.02.2011 um 22:39


platzwart - Do 17.02.11 22:53


Delphi-Quelltext
1:
procedure tform1.zeichne(planet : THimmelskoerper);                    


Das ist schon richtig so. Wieso funktioniert das bei dir nicht?


gnomecoder - Do 17.02.11 23:01

:autsch::autsch::autsch:
hab THimmelskoerper nach form1 deklariert.
und da versuche ich seit stunden auf die lösung zu kommen :roll: