Fórum Chamar determinada Unit dependendo da situação #535944
29/10/2015
0
Pretendo separar em unit minhas funções de acesso a ECF conforme a marca.
Assim ficaria:
daruma.pas
bematech.pas
epson.pas
urano.pas
Em cada arquivo, haverá a função Cabecalho, por exemplo.
Como faço para que no meu sistema, conforme o modelo configurado, vá chamar a função daquela unit sem ser necessário eu identificar:
Por exemplo, como:
daruma.cabecalho ou epson.cabecalho
att
Mario Inacio
Curtir tópico
+ 0Post mais votado
29/10/2015
Pesquisando um pouco, achei um jeito de vc criar uma função dinamicamente... Olha só!
Primeiro declare esse novo type:
type TNodeFunction = function(const Format: string; DateTime: TDateTime): string; // Substitua "function(const Format: string; DateTime: TDateTime): string;" pela máscara da sua função, só usei essa como teste
Depois crie uma variável global conforme abaixo, ela será a sua nova função dinâmica.
newCabecalho: TNodeFunction;
Agora, em algum evento vc vai declarar de qual biblioteca sua variável newCabecalho vai obter a função! Seguindo o exemplo da máscara que declarei antes, é da função FormatDateTime, então ficaria assim
newCabecalho:= SysUtils.FormatDateTime; // Aqui vc deverá fazer aquele "if else" uma unica vez para saber de qual unit deverá ser pego a função.
Pronto, a função newCabecalho é igual a função FormatDateTime... Vc pode usar isso no seu projeto!
Espero que tenha entendido... qualquer coisa pergunta aí!
Mateus Ribeiro
Gostei + 1
Mais Posts
29/10/2015
Mateus Ribeiro
Te aconselho a fazer alguns "if else" pra saber
if EPSON then epson.cabecalho else if DARUMA then daruma.cabecalho else ......
e por aí vai!
Gostei + 0
29/10/2015
Mario Inacio
Isso era justamente o que queria evitar, pois ja tenho uma unit com as funções, fazendo um "if" em todas elas.
Gostei + 0
29/10/2015
Mario Inacio
É uma solução interessante, vou implementar.
obg pela atenção.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)