Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
Delphi 12 Athens
|
Re: Array im Prozedurnamen ansprechen
7. Jul 2009, 14:07
Du prüfst vor der Zuweisung auf Label1.Caption nicht, ob du überhaupt eine Karte gefunden hast. Wenn das nähmlich innerhalb deiner Schleife nicht der Fall ist, hat k den Wert maxKarten und zeigt damit über das Array hinaus. Das gibt im besten Fall eine Indexverletzung, im schlimmsten Fall eine Zugriffsverletzung.
Also weise Label1.Caption abhängig von MousOverKarte entweder den Wert wie bisher zu oder eine leere Zeichenkette.
Abgesehen davon ist der Vergleich von X und Y falsch und überflüssig.
Die Methode ist dem Ereignis OnMouseDown der Karte zugewiesen.
Demzufolge ist Sender das Image, auf das geklickt wurde.
X und Y sind Koordinaten innerhalb der Karte mit dem Ursprung der linken oberen Ecke der Karte.
Left und Top der Karte haben aber als Ursprung die linke obere Ecke des Formulars(Clientbereich).
Beide Werte können deshalb nicht direkt miteinander verglichen werden.
Der Vergleich müsste etwa so lauten:
if ArrayBild[k] = Sender then
In der Methode NeueKarte wird noch nicht der Fall berücksichtigt, daß bereits 120 Karten erzeugt wurden.
In diesem Fall gäbe es dort auch einen Fehler wie oben.
|