Problema de asignación de puntero desde una cadena
Saludos:
Tengo el siguiente código y necesito que alguien me explique cómo debo lograr mi objetivo: procedure MyClick(Self, Sender: TObject); begin ShowMessage('Caption del Sender: ' + TButton(Sender).Caption); end; procedure TForm1.Button1Click(Sender: TObject); var M: TMethod; S: string; begin M.Data := nil; // M.Code := @MyClick; <---- así funciona ok S:= 'MyClick'; <---- así asigno el valor del procedure a una variable, puesto que ella va a variar M.Code:= @S; <--- aquí da error (como es lógico), pero es lo que quisiera lograr, que pueda asignar ese puntero a procedure desde una variable Button1.OnClick := TNotifyEvent(M); Button2.OnClick := TNotifyEvent(M); Button3.OnClick := TNotifyEvent(M); end; Gracias |
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.
Lo de usar "AS" es una cuestión de estilo. :cool: Por cierto, usa el botón de código para formatearlo: |
Dudas
Gracias por responder..
Es cierto que no debo usar los punteros de strings así, pero fue para dar la idea de lo que necesito. Es que tengo un código que en dependencia de cierto resultado, le voy asignar a un TMenuItem el evento OnClick según la función o procedimiento que me pasen como variable: Digamos
pero luego, puede que cambie de nuevo así:
Entonces con la función o procedimiento "Asignar", utilizaría:
es algo así la idea, ok. Ahora bien, yo puedo usar quizás:
pero desearía saber si lo puedo usar con cadena. pd. No logro poner que el código me salga con estilo delphi, marco el icon, me sobrea el código, pero no lo publica como delphi. Tampoco recibo las respuestas a mis hilos al correo, por qué..? Gracias por todo. |
Recuerda poner los tags al código fuente, ejemplo:
Gracias :) |
Creo que para lo que quieres hacer debes usar RTTI. Nunca he usado RTTI así que no sé ni cómo funciona, pero según he leído debería permitirte encontrar funciones, objetos, clases, propiedades y métodos por el nombre.
Respecto a los avisos por correo, los moderadores estamos comprobándolo. :) |
|
La franja horaria es GMT +2. Ahora son las 14:21:06. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi