Fórum D7: DLL em C não retorna parâmetro passado por referência #365147
15/10/2008
0
Prezados.
Estou utilizando uma DLL escrita em C++ no Delphi 7. Até aí tudo OK. Acesso as funções e procedimentos sem problemas. Contudo, existe uma única função que recebe um parâmetro passado por referência, ou seja, ela deveria alterar o conteúdo do parâmetro mas não altera.
Vejam trechos do código:
function fRead(var pDados: String; pCodigo: Integer; pTamanho: Integer): Integer; stdcall; external ´functions.dll´;
// Esta é a implementação de acesso a função, está OK, pois ela acessa e executa o que tem de executar (retorna se sucesso ou erro)
procedure TForm1.Btn_LerClick(Sender: TObject);
var
vDados : String;
begin
Try
ShowMessage( IntToStr( fRead(vDados, 0, Length(vDados)) ) ); // Exibe código de sucesso ou erro
ShowMessage(vDados); // Exibe apenas o dialog... sem nenhum dado
Except
ShowMessage(´Erro ao ler.´);
end;
end;
Em suma, a função roda corretamente, mas não altera o conteúdo da variável passada como parâmetro, pois no segundo ShowMessage deveria exibir uma palavra que a função coloca na variável.
Os Srs tem alguma idéia do que está ´pegando´?
Grato
Estou utilizando uma DLL escrita em C++ no Delphi 7. Até aí tudo OK. Acesso as funções e procedimentos sem problemas. Contudo, existe uma única função que recebe um parâmetro passado por referência, ou seja, ela deveria alterar o conteúdo do parâmetro mas não altera.
Vejam trechos do código:
function fRead(var pDados: String; pCodigo: Integer; pTamanho: Integer): Integer; stdcall; external ´functions.dll´;
// Esta é a implementação de acesso a função, está OK, pois ela acessa e executa o que tem de executar (retorna se sucesso ou erro)
procedure TForm1.Btn_LerClick(Sender: TObject);
var
vDados : String;
begin
Try
ShowMessage( IntToStr( fRead(vDados, 0, Length(vDados)) ) ); // Exibe código de sucesso ou erro
ShowMessage(vDados); // Exibe apenas o dialog... sem nenhum dado
Except
ShowMessage(´Erro ao ler.´);
end;
end;
Em suma, a função roda corretamente, mas não altera o conteúdo da variável passada como parâmetro, pois no segundo ShowMessage deveria exibir uma palavra que a função coloca na variável.
Os Srs tem alguma idéia do que está ´pegando´?
Grato
R.dallagnol
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)