DLLs Fabricantes de impressoras
03/11/2016
0
Estou precisando de uma orientação.
Tenho em meu sistema as DLLs da Daruma declarada para trabalhar com o SAT + impressora Daruma. Agora eu tô precisando trabalhar tbem com a Epson e Elgin, com o SAT e impressora.
Minha dúvida é a seguinte, atualmente no sistema eu carrego as DLLs da Daruma, que está num arquivo ".pas" que carrego na inicialização do sistema, como agora vou usar o SAT epson e SAT Elgin, tem como eu deixar todas as DLLs definidas no sistemas, mas carregar apenas do fabricante que eu escolher.
Obrigado a todos pela atençãoq
Tenho em meu sistema as DLLs da Daruma declarada para trabalhar com o SAT + impressora Daruma. Agora eu tô precisando trabalhar tbem com a Epson e Elgin, com o SAT e impressora.
Minha dúvida é a seguinte, atualmente no sistema eu carrego as DLLs da Daruma, que está num arquivo ".pas" que carrego na inicialização do sistema, como agora vou usar o SAT epson e SAT Elgin, tem como eu deixar todas as DLLs definidas no sistemas, mas carregar apenas do fabricante que eu escolher.
Obrigado a todos pela atençãoq
Sandro ávila
Curtir tópico
+ 0
Responder
Post mais votado
03/11/2016
Tem de duas formas, estática e dinamica.
A Estática é mais simples, mas tem que deixar todas as dlls de todos os fabricantes junto com o sistema independentemente de qual ecf irá utilizar.
Como selecionar qual dll utilizar:
1 - Crie um arquivo .pas para cada ECF onde vai ter todas as funções das dlls;
2 - Crie um objeto do tipo TECF que contenha todos os métodos abstratos para manipular a ECF. EX:
type
TECF = class()
public
procedure LeituraX; virtual;abstract;
procedure cancelaCupom; virtual;abstract;
procedure abriCupomInformandoCliente(nome, documento, Endereco: String); virtual; abstract;
// e por aí vai....
end;
3 - Crie uma classe para cada ECF herdada da classe acima e nos métodos você direciona pra qual comando você vai usar. Ex:
interface
type
TECFBematech = class(TECF)
public
procedure LeituaX; override;
end;
implementation
uses
BematechDLLFunctions; // aqui é o nome do arquivo .pas que tem as funções da DLL da bematech
procedure TECFBematech.LeituraX;
begin
BemaFi_LeituraX;
end;
4 - Quando inicializar o sistema verifique a opção selecionada pelo cliente e crie a classe:
var
ecf: TECF;
begin
case opcaoEscolida of
1: ecf: TECFBematech.Create;
2: ecf: TECFDaruma.Create;
// E por aí vai...
end;
end;
Já a forma de carregar dinamicamente é quase idêntica a forma acima, porém você tem que nas classes que representa cada DLL fazer o carregamento dinamico da DLL conforme mostrado no artigo https://www.devmedia.com.br/artigo-clube-delphi-102-desenvolvendo-dlls/11770 onde se utiliza o comando LoadLibrary().
A vantagem deste método é que não há necessidade de deixar na máquina todas as dlls , somente as que serão utilizadas.
Se o Artigo lhe ajudou, marque um joinha para eu ficar ciente.
Espero ter ajudado
A Estática é mais simples, mas tem que deixar todas as dlls de todos os fabricantes junto com o sistema independentemente de qual ecf irá utilizar.
Como selecionar qual dll utilizar:
1 - Crie um arquivo .pas para cada ECF onde vai ter todas as funções das dlls;
2 - Crie um objeto do tipo TECF que contenha todos os métodos abstratos para manipular a ECF. EX:
type
TECF = class()
public
procedure LeituraX; virtual;abstract;
procedure cancelaCupom; virtual;abstract;
procedure abriCupomInformandoCliente(nome, documento, Endereco: String); virtual; abstract;
// e por aí vai....
end;
3 - Crie uma classe para cada ECF herdada da classe acima e nos métodos você direciona pra qual comando você vai usar. Ex:
interface
type
TECFBematech = class(TECF)
public
procedure LeituaX; override;
end;
implementation
uses
BematechDLLFunctions; // aqui é o nome do arquivo .pas que tem as funções da DLL da bematech
procedure TECFBematech.LeituraX;
begin
BemaFi_LeituraX;
end;
4 - Quando inicializar o sistema verifique a opção selecionada pelo cliente e crie a classe:
var
ecf: TECF;
begin
case opcaoEscolida of
1: ecf: TECFBematech.Create;
2: ecf: TECFDaruma.Create;
// E por aí vai...
end;
end;
Já a forma de carregar dinamicamente é quase idêntica a forma acima, porém você tem que nas classes que representa cada DLL fazer o carregamento dinamico da DLL conforme mostrado no artigo https://www.devmedia.com.br/artigo-clube-delphi-102-desenvolvendo-dlls/11770 onde se utiliza o comando LoadLibrary().
A vantagem deste método é que não há necessidade de deixar na máquina todas as dlls , somente as que serão utilizadas.
Se o Artigo lhe ajudou, marque um joinha para eu ficar ciente.
Espero ter ajudado
Hélio Devmedia
Responder
Mais Posts
07/11/2016
Sandro ávila
Muito obrigado, pela indicação deste artigo, esclareceu bastante as duvidas qto ao uso de Dlls
Responder
Clique aqui para fazer login e interagir na Comunidade :)