Problema de memória e DLL !!

12/12/2003

0

Bom dia.
Tenho uma unit onde declaro funções de algumas ddl.


unit funcao;

interface

uses SysUtils;
   function StrToPChar(const Str: string): PChar;

   function MessageBox(HWnd: Integer; Text, Caption: PChar;
Flags: Integer): Integer; stdcall;external ´user32.dll´ name ´MessageBoxA´;

{------------------}
   DARUMA345
{------------------}

function DAR_Status: Integer;
function DAR_Status; external ´fs345_32.dll´;
function DAR_AbreSerial(conf:string): Integer;stdcall;external ´fs345_32.dll´;

....

{---------------------------}
   IMPRESSORA DUAL
{---------------------------}

function Abre_Cupom(Porta: String; Controle : String):Integer;stdcall;external ´turbo.dll´;
function Vende_Item(codigo:String; nome:String; quant:String; unitario : String; total : String; Porta : String):Integer; stdcall;external ´turbo.dll´;
function Exclui_Item(Porta:String; nome: String):Integer; stdcall;external ´turbo.dll´;
function Contravale(numero:Integer; Nome:String; Valor : String; Porta : String):Integer; stdcall;external ´turbo.dll´;
// fundo de caixa ou suprimento
function Fundo_Caixa(numero : Integer; Nome : String; Valor : String; Porta : String):Integer; stdcall;external ´turbo.dll´;
// avança linhas
function Avanca(quant:Integer; Porta : String):Integer; stdcall;external ´turbo.dll´;
// abre gaveta
function A_Gaveta(Porta : String):Integer;stdcall;export;external ´turbo.dll´;
// permite a inserção de um texto qualquer
function Linha_Aberta(Texto:String; Porta : String):Integer;stdcall;external ´turbo.dll´;
//cancela o cupom atual
function Canc_Venda(Numero:String; Porta : String):Integer; stdcall;external ´turbo.dll´;
function Vinculado(Cupom : String; Vl_Total : String; Vl_Pago : String; Porta : String):Integer; stdcall;external ´turbo.dll´;

...

{---------------------------}
       URANO 1EFC3
{---------------------------}

function InicializaDLL(Porta: String): Integer; stdcall; external ´Dll1efc3.dll´;
function FinalizaDLL: Integer; stdcall; external ´Dll1efc3.dll´;
function Relatorio_XZ(Tipo: String): Integer; stdcall; external ´Dll1efc3.dll´;
function FinalizaRelatorio(operador: string): Integer; stdcall; external ´Dll1efc3.dll´;
function ImprimeCabecalho: Integer; stdcall; external ´Dll1efc3.dll´;
function LinhasLivres(texto: string): Integer; stdcall; external ´Dll1efc3.dll´;
function VendaItem(Cod, Descr, Qtde, VUnit, Ident, Unid, Tipo: String): Integer; stdcall; external ´Dll1efc3.dll´;
function Pagamento(Cod, Descr, Valor, Acumular: String): Integer; stdcall; 

{---------------------------}
     DISPLAY GERTEC
{---------------------------}

 Procedure OpenTec44; stdcall; export; external ´Tec44Win.dll´
 Procedure CloseTec44; stdcall; export; external ´Tec44Win.dll´

...
 



E porai vai ... ou seja meu sistema roda com varias impressoras fiscais e tenho declarada todas funções de todas as dll. Porém possuo um arquivo ini configurado qual impressora meu sistema vai utilizar e gostaria que ele apenas carregasse as funções da dll dessa impressora e não todas funções de todas dll pq acho que isso esta pesando um pouco no meu sistema, alguns momento ocorre um estouro de memória =(

Valeuuuu =)


Responder

Posts

12/12/2003

Marcelo Saviski

p/ carregar a dll só quando vc quiser, acho que faz + ou - asim:

var
  Library: THandle;

funtion AlgumaCoisa(Params: TipoTal): TipoTal;






....

para carregar:

begin
  Library := LoadLibrary(´DllTal.dll´);
  @AlgumaCoisa := GetProcAddress(Library, ´Nome da Função´);
 
end;




para Descarregar:

FreeLibrary(Library);



Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar