Caster un string en fonction

Résolu
csweety13
Messages postés
20
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
6 août 2008
- 8 déc. 2005 à 10:49
cs_Delphiprog
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
9 janvier 2013
- 8 déc. 2005 à 20:54
Bonjour,



Pour faire court, j'ai une variable de type string et une procédure, par exemple :



public

procedure fonction1();

Var1 : string;

...

Var1 := 'fonction1';



Lorsque je clique sur un bouton, je voudrais lancer la fonction 'fonction1'. Mon problème est donc le suivant.

Je ne veux pas faire :

if Var1 = 'fonction'1 then fonction1();



Mais je voudrais "caster" Var1 en type "procedure". Je crois que c'est
possible, mais je ne retrouve aucune information sur ce genre de
manipulation.



Merci pour votre aide, d'avance.

CSweety13

5 réponses

Cirec
Messages postés
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 2022
48
8 déc. 2005 à 11:32
Un Exemple simple qui devrai t'aider

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
// Your routines (that you'll run by name) must be here
procedure Hello_World(Sender: TObject);
private
procedure ExecuteRoutine(Instance: TObject; Name: string);
end;


var
Form1: TForm1;


type
TExecute = procedure of object;


implementation


{$R *.DFM}


procedure TForm1.ExecuteRoutine(Instance: TObject; Name: string);
var
Routine: TMethod;
Execute: TExecute;
begin
Routine.Data := Pointer(Instance);
// Returns the address of a published method.
Routine.Code := Instance.MethodAddress(Name);
if Routine.Code = nil then Exit;
Execute := TExecute(Routine);
Execute;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
ExecuteRoutine(Form1, 'Hello_World');
end;


procedure TForm1.Hello_World(Sender: TObject);
begin
ShowMessage('This is a test');
end;
end.

Si tu cliques sur Button1 ça lance Hello_World voilà c'est tout
3