DLLs Fabricantes de impressoras

Delphi

Automação Comercial

03/11/2016

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

Curtidas 0

Melhor post

Hélio Devmedia

Hélio Devmedia

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
GOSTEI 1

Mais Respostas

Sandro ávila

Sandro ávila

03/11/2016

Muito obrigado, pela indicação deste artigo, esclareceu bastante as duvidas qto ao uso de Dlls
GOSTEI 0
POSTAR