Hi! Hab ein ich sag mal "code-kosmetisches" Problem:
- Es geht um ein Schachspiel
- Das "Schachbrett" besteht aus schwarzen und weißen Quadrat-TShapes,
- Dem
OnMouseMove-Event jedes shapes ist der Aufruf der Prozedur
MouseMoveOverShape zugeordnet
- Beim Ausführen der Prozdedur (d.h. wenn die maus sich auf ein "neues" Feld bewegt) soll ein Label den Namen des Feldes anzeigen. Die Felder sind entsprechend benannt (A1, B1,....)
Die Prozedur sieht wie folgt aus
(und funktioniert so auch):
Delphi-Quellcode:
procedure TForm1.MouseMoveoverShape(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var POverShape :^TShape; //ein Zeiger auf das Shape-Objekt über dem sich die Maus befindet
begin
POverField := @Sender; //Dem Zeiger wird die Adresse des "Sender", also des "Auslösers" der Prozedur zugeordnet
FieldNameLabel.Caption := POverField.Name; //in einem Label wird der Name des Objekts, das über den Zeiger referrenziert wird ausgegeben
end;
Das funktioniert einwandfrei, aber wie ich es auch versuche, ohne den (in meinen Augen) "Umweg" über den Pointer
POverField geht es nicht!
müsste ich mir nicht die Deklaration des ^TShape-Pointers sparen können? Schliesslich wird der Prozedur doch mit
Sender :TObject eine Referenz auf die aktivierende Shape-Objekt-Instanz übergeben, oder nicht?
Aber egal was ich mache...
Delphi-Quellcode:
FeldLabel.Caption := Sender.Name; // -->undeclared identifier 'Name'
FeldLabel.Caption := ^Sender.Name; // -->missing Operator or Semicolon
FeldLabel.Caption := Sender^.Name; // -->Pointer type required
FeldLabel.Caption := Sender.Name^; // -->undeclared identifier 'Name'
FeldLabel.Caption := @Sender.Name; // -->undeclared identifier 'Name'
...es will nich gehen
Deshalb:
Bitte helft mir!
das Problem ist bestimmt/hoffentlich ganz harmlos
Ihr müsst entschuldigen, falls es schon nen Thread dazu gibt, aber ne Suche nach "Sender :TObject" oder so is in dem Forum wohl eher aussichtslos
Danke!