ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Erro na criação de uma DLL para comunicação com o Vidalink

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
cainelli
Novato
Novato


Registrado: Sexta-Feira, 29 de Outubro de 2004
Mensagens: 7

MensagemEnviada: Ter Jun 28, 2011 3:06 pm    Assunto: Erro na criação de uma DLL para comunicação com o Vidalink Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
cainelli
Novato
Novato


Registrado: Sexta-Feira, 29 de Outubro de 2004
Mensagens: 7

MensagemEnviada: Qui Jun 30, 2011 9:31 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB