Ver Mensaje Individual
  #9  
Antiguo 31-07-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Un pequeño apunte. De acuerdo con Rudorf MethodAddress funciona para métodos públicos o publicados. Sin embargo una pequeña prueba me mostró lo contrario:

Código:
TFoo = class
published
  function Doo: Integer;
end;

...

procedure TForm1.Button1Click(Sender: TObject);
var
  Foo: TFoo;

begin
  Foo := TFoo.Create;
  if Foo.MethodAddress('Doo') <> nil then
    Beep;

  Foo.Free;
end;
El botón hace beep pero se queda mudo si cambiamos published por public

En el primer caso, por cierto, noten que no hay directiva $M de forma que se compila con el default {$M-} de manera que no se genera RTTI (como se comprueba viendo que Foo.ClassInfo es nil) lo cual demuestra que MethodAddress funciona sin usar RTTI.

// Saludos
Responder Con Cita