Erstens:
Delphi-Quellcode:
function TStein.compare(tb:TBase):integer;
begin
If x < TStein(tb).x Then result:=-1;
If x > TStein(tb).x Then result:=+1;
If y < TStein(tb).y Then result:=-1;
If y > TStein(tb).y Then result:=+1;
If (x = TStein(tb).x) AND (y = TStein(tb).y) Then result:=0;
end;
Die letzte If Anweisung kannst du dir sparen, wenn du vorher result auf 0 setzt.
zweitens:
Du verwendest diese Methode überhaupt nicht.
Drittes: Ist immer gewährleitest das der richtige Datentyp in tb drin ist ?
du castest "hard" ändere da mal in (tb as TStein).x um.
Du kannst auch mit tb.classname schauen ob die richtige Klasse drin ist.
Viertens: Du kannst mit Assigned prüfen ob tb einen Wer hat.
Fünftens: Deine Art und weise wie du den Code geschrieben hast, ist nicht gerade "Praktisch", wenn du mehr Zeit hättest, würde ich dir noch weitere Vorschläge machen. Aber das würde ein kompletten Neu Anfang bedeuten.
Sechstens:
Es gibt eine Praktische Funktion die sich ptInPoint nennt. Schau sie dir mal an.
edit01: Danke an "fkerber". Ist mir beim Schreiben Gar nicht aufgefallen. *G*