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
Sandro ávila

Sandro ávila

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

Hélio Devmedia

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar