OnExecute dinâmico
Pessoal, estou num beco sem saída. Tenho um objecto (digamos, um menu) e um procedimento chamado Teste.
Para o menu escrevo o seguinte:
MenuTeste.onexecute := Teste;
Até aqui não há problema. O que pretendo fazer é guardar a palavra ´Teste´ num arquivo de texto, ler essa palavra e (dependendo da palavra) executar o procedure cujo nome é o lido no arquivo.
Haverá alguma alma caridosa com a solução?
Um bacalhau aflito
Para o menu escrevo o seguinte:
MenuTeste.onexecute := Teste;
Até aqui não há problema. O que pretendo fazer é guardar a palavra ´Teste´ num arquivo de texto, ler essa palavra e (dependendo da palavra) executar o procedure cujo nome é o lido no arquivo.
Haverá alguma alma caridosa com a solução?
Um bacalhau aflito
Bacalhau
Curtidas 0
Respostas
Cebikyn
23/08/2003
Você poderia chamar a procedure pelo nome:
Passe o nome da procedure para a função a cima e ela executará a procedure para você.
Um detalhe: só funciona para procedures tipo [i:5dabaa6c10]published[/i:5dabaa6c10]
function ExecProc(MyProcStr : String):boolean; Var MyProc : procedure of object; Begin TMethod(myProc).data:=self; TMethod(MyProc).code :=MethodAddress(MyProcStr); result:=true; if not Assigned(MyProc) Then result:=false else MyProc; end;
Passe o nome da procedure para a função a cima e ela executará a procedure para você.
Um detalhe: só funciona para procedures tipo [i:5dabaa6c10]published[/i:5dabaa6c10]
GOSTEI 0
Bacalhau
23/08/2003
Cebikyn, foi em cheio!!! Muito obrigado. Estou ainda com um pequeno obstáculo, mas o objectivo principal foi conseguido.
Agora tenho uma base comum para todo o meu software, executando procedures, funções em dlls, outros executáveis, tuudo!
A coisa ainda está meio feia, mas quando for consistente, envio uma cópia. Só preciso saber o mail.
abraço do bacalhau
Agora tenho uma base comum para todo o meu software, executando procedures, funções em dlls, outros executáveis, tuudo!
A coisa ainda está meio feia, mas quando for consistente, envio uma cópia. Só preciso saber o mail.
abraço do bacalhau
GOSTEI 0