Ir al contenido


Foto

Lazarus no compila asignacion de evento dinamica


  • Por favor identifícate para responder
2 respuestas en este tema

#1 arriolar

arriolar

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 09 mayo 2011 - 07:25

Saludos a todos, soy nuevo en el foro y quisiera saber si alguien me puede ayudar con lo siguente:

Tengo instalado Lazarus sobre Ubuntu 1010 la version de Lazarus es 09.28.2-10ubuntu1 beta con FPC 2.4.0

Cuando asigno la respuesta de un evento dinamicamente el compilador me da el error siguente: "unit1.pas(39,35) Error: Wrong number of parameters specified for call to "FormClick"
"
el codigo es el siguente:



delphi
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  9.   StdCtrls;
  10.  
  11. type
  12.  
  13.   { TForm1 }
  14.  
  15.   TForm1 = class(TForm)
  16.     Button1: TButton;
  17.     procedure FormClick(Sender: TObject);
  18.     procedure FormCreate(Sender: TObject);
  19.   private
  20.     { private declarations }
  21.   public
  22.     { public declarations }
  23.   end;
  24.  
  25. var
  26.   Form1: TForm1;
  27.  
  28. implementation
  29.  
  30. { TForm1 }
  31.  
  32. procedure TForm1.FormClick(Sender: TObject);
  33. begin
  34.   ShowMessage('Hola');
  35. end;
  36.  
  37. procedure TForm1.FormCreate(Sender: TObject);
  38. begin
  39.   Button1.OnClick:=Form1.FormClick;
  40. end;
  41.  
  42. initialization
  43.   {$I unit1.lrs}
  44.  
  45. end.

                                         

Como ven el compilador no "Entiende" que es una asignacion y se comporta como si se estuviese llamando al procedimiento.

Tengo bajo Windows la misma version de Lazarus pero la del FPC es la 2.2.4 y alli no me da este error, si alguno de Uds. me puede ayudar a solucionar esto le estare sumamente agradecido.
  • 0

#2 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 09 mayo 2011 - 12:15

Hola.

Tiene pinta de ser un bug de esa versión de Lazarus (funciona en una versión, y en otra no funciona).

¿ No deberías actualizar a la última versión de Lazarus disponible ?, creo que en cada versión van solucionando bastantes bugs, y actualmente están por la 0.9.30. No parece muy conveniente quedarte con una versión antigua.

Saludos.
  • 0

#3 Héctor Randolph

Héctor Randolph

    501st Legion

  • Moderadores
  • PipPipPip
  • 664 mensajes
  • LocationMéxico

Escrito 09 mayo 2011 - 10:52

La asignación de eventos en Lazarus es un poco diferente a Delphi

Hay dos formas de solucionarlo, puedes compilar en Delphi Mode, o bien anteponer el signo '@' al nombre del procedimiento.



delphi
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3.   Button1.OnClick:=@FormClick;
  4. end;




Saludos
  • 0




IP.Board spam blocked by CleanTalk.