Ver Mensaje Individual
  #2  
Antiguo 25-10-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Evidentemente, no puedes asignar a un puntero a procedimiento la dirección de una cadena de caracteres.

Para empezar, S debe ser un puntero a procedimiento, igual que la propiedad/campo Code.

Código Delphi [-]
PROCEDURE MyClick (Self, Sender: TObject);
BEGIN
  ShowMessage ('Caption del Sender: ' + (Sender AS TButton).Caption);
END;

PROCEDURE TForm1.Button1Click (Sender: TObject);
VAR
  M: TMethod;
  S: PROCEDURE (a, b: TObject); { Esto es un puntero a procedimiento con dos parámetros tipo TObject }
BEGIN
  M.Data := nil;
  S := @MyClick; { Aquí estás obteniendo la dirección del procedimiento MyClick y asignándolo a S. }
  M.Code := S;   { Aquí estás asignando el contenido de S a M.Code (algo redundante, por cierto. }

  Button1.OnClick := M AS TNotifyEvent;
  Button2.OnClick := M AS TNotifyEvent;
  Button3.OnClick := M AS TNotifyEvent;
END;

Lo de usar "AS" es una cuestión de estilo.

Por cierto, usa el botón de código para formatearlo:
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 25-10-2012 a las 14:52:50.
Responder Con Cita