Autor Beitrag
gnomecoder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51
Erhaltene Danke: 5



BeitragVerfasst: Do 17.02.11 22:46 
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.
ausblenden 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

ausblenden 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
ausblenden Delphi-Quelltext
1:
irgendwas = Class of thimmelskoerper;					

und dann
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Do 17.02.11 22:53 
ausblenden Delphi-Quelltext
1:
procedure tform1.zeichne(planet : THimmelskoerper);					


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

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)

Für diesen Beitrag haben gedankt: gnomecoder
gnomecoder Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51
Erhaltene Danke: 5



BeitragVerfasst: 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: