Code:
function TQuadrat.getroffen (pHPosition: real; pVPosition: real) : TFigur;
begin
if ((pHPosition > self.gibHPosition) AND (pHPosition < self.gibHPosition+zGroesse)
AND (pVPosition > self.gibVPosition) AND (pVPosition < self.gibVPosition+zGroesse)) then
// dies ist die Figur
begin
hatStift.zeichneRechteck(10,10);
result := Self;
end
else
begin
if (kenntNachfolger <> NIL) then
begin
result := kenntNachfolger.getroffen(pHPosition,pVPosition); // <--------
end
else result := NIL;
end
end;
Ich vermute, dass kenntNachfolger vom Typ TFigur ist, und die "getroffen"-Methode eines weiteren Objektes aufrufen soll, soweit hinterlegt. Du musst dabei dann natürlich auch das result "durchreichen", ähnlich wie bei einer Rekursion. Das Vorgehen ist auch so halb rekursiv - es wird ja immer die gleiche Methode aufgerufen, bis eine Abbruchbedingung (in dem Fall eine von zweien) erfüllt ist. Nur dass die Methoden jeweils zu unterschiedlichen Instanzen gehören, und lediglich Namen und Signatur teilen. (Sowas bastel ich auch immer gern in der Art
)
\\edit: No red box, jamjam =)
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel