|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
cainelli Novato
Registrado: Sexta-Feira, 29 de Outubro de 2004 Mensagens: 7
|
Enviada: Ter Jun 28, 2011 3:06 pm Assunto: Erro na criação de uma DLL para comunicação com o Vidalink |
|
|
Prezados,
Estou criando uma dll para ser utilizada pelo software da Vidalink, que deve ter a seguinte função:
Código: |
library Integracao_Vidalink_Produtos;
uses
SysUtils,
Classes,
Dialogs,
uDm in 'uDm.pas' {dm: TDataModule};
{$R *.res}
function LeProdLoja( sCateg, sKey : pAnsiChar; byTrataPeso, byDeciPeso, byArredonda,
byDescr40 : Byte; ptrBuffProd, prtBuffAssoc : pAnsiChar ): ShortInt; stdcall;
begin
ptrBuffProd:= pAnsiChar(' ALENIA 00000111000000011100');
ShowMessage('3 - ' + sKey + ' - ' + ptrBuffProd + ' - ' + IntToStr(length(ptrBuffProd)));
Result:= 0;
end;
exports
LeProdLoja;
begin
end.
|
A assinatura da função tem q ser obedecida, sendo que o sKey é um ean (entrada) e o ptrBuffProd um Char(75).
Os outros parametros não estão mais em uso e são mantidos apenas para compatibilidade.
Ocorre que o software que vai utilizar a dll não esta recebendo a informação que estou passando para o
ptrBuffProd.
Como é minha primeira dll, sei que estou fazendo algo errado, mas o que ?
Um detalhe, tentei incluir um var ptrBuffProd na assinatura da função, mas o erro persistiu.
Agradeço a ajuda dos colegas,
Marcello.[/code] |
|
Voltar ao Topo |
|
|
cainelli Novato
Registrado: Sexta-Feira, 29 de Outubro de 2004 Mensagens: 7
|
Enviada: Qui Jun 30, 2011 9:31 am Assunto: |
|
|
Prezados,
Vou postar aqui a solução, para o caso de alguém passar pelo mesmo problema:
1. Não utilizar o var, pois o pChar é um ponteiro, e por consequencia, já é passado por referência;
2. Utilizar a função StrPCopy para converter a string em PChar.
Código: |
function DadosProduto(sCateg, sKey: PChar; byTrataPeso, byDeciPeso, byArredonda,
byDescr40: Byte; ptrBuffProd: PChar; ptrBuffAssoc: PChar): ShortInt; stdcall;
var
Str_ptrBuffProd : String;
.....
Str_ptrBuffProd := ‘ TESTE 00000033330000003333’;
StrPCopy( ptrBuffProd, Str_ptrBuffProd );
|
Essas instruções foram passados pelo suporte da Vidalink e resolveram o problema.
Marcello. |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|