Fórum DLL não retorna valor PCHAR muiro grande #364584
03/10/2008
0
Pessoal, estou com um problema que não consigo encontrar a causa, quanto menos uma solução.
Desenvolvi uma DLL com uma função exportada que recebe um valor do tipo PCHAR como parametro, faz um processamento e retorna um outro valor PCHAR como resposta.
A declaração da função está assim:
function ProcessaDados(Entrada : Pchar) : Pchar; stdcall;
Exportei da seguinte maneira:
exports ProcessaDados name ´DLLProcessaDados´;
O problema é que quando o retorno da DLL é relativamente pequeno, ele retorna normal para o programa, que processa e da continuidade sem problema nenhum.
Mas quando esse retorno é muito grande, a DLL simplesmente não retorna nada para o programa que chama, ou melhor, o programa não recebe nada, porque a DLL retorna tudo normal.
Debuguei a DLL ate a ultima linha de código, e ela retornou tudo sem problemas. No momento que esse valor é passado para o programa, que ele se perde. Alguem sabe o que pode estar acontecendo e como contorná-lo??
Estou usando PCHAR exatamente pq as DLLs feitas em delphi que utilizam string já são um pouco problemáticas, ate pq tem que mandar junto a BORLNDMM.DLL.
Obrigado.
Desenvolvi uma DLL com uma função exportada que recebe um valor do tipo PCHAR como parametro, faz um processamento e retorna um outro valor PCHAR como resposta.
A declaração da função está assim:
function ProcessaDados(Entrada : Pchar) : Pchar; stdcall;
Exportei da seguinte maneira:
exports ProcessaDados name ´DLLProcessaDados´;
O problema é que quando o retorno da DLL é relativamente pequeno, ele retorna normal para o programa, que processa e da continuidade sem problema nenhum.
Mas quando esse retorno é muito grande, a DLL simplesmente não retorna nada para o programa que chama, ou melhor, o programa não recebe nada, porque a DLL retorna tudo normal.
Debuguei a DLL ate a ultima linha de código, e ela retornou tudo sem problemas. No momento que esse valor é passado para o programa, que ele se perde. Alguem sabe o que pode estar acontecendo e como contorná-lo??
Estou usando PCHAR exatamente pq as DLLs feitas em delphi que utilizam string já são um pouco problemáticas, ate pq tem que mandar junto a BORLNDMM.DLL.
Obrigado.
Prgdelphi
Curtir tópico
+ 0
Responder
Posts
10/10/2008
Prgdelphi
ninguém tem uma idéia do que pode ser isso e de como contornar?
O negocio tá ficando feio agora, a dll só retorna o valor quando quer... uma hora retorna, outra hora não... e não é problema com as funções internas da DLL, pq eu ja joguei todas elas pra um executavel e testei infinitas vezes e sempre foi OK.
Como resolver este problema? Quando crio uma dll no delphi ele vem comentado que se eu usar PCHAR, não terei problema com memória, mas pelo jeito não é bem assim.
Alguém sabe se no delphi 2009 esse problema com DLL´s foi corrigido?
O negocio tá ficando feio agora, a dll só retorna o valor quando quer... uma hora retorna, outra hora não... e não é problema com as funções internas da DLL, pq eu ja joguei todas elas pra um executavel e testei infinitas vezes e sempre foi OK.
Como resolver este problema? Quando crio uma dll no delphi ele vem comentado que se eu usar PCHAR, não terei problema com memória, mas pelo jeito não é bem assim.
Alguém sabe se no delphi 2009 esse problema com DLL´s foi corrigido?
Responder
Gostei + 0
05/12/2008
Clouzada
Veja a solução em:
http://scriptbrasil.com.br/forum/index.php?showtopic=81053
http://scriptbrasil.com.br/forum/index.php?showtopic=81053
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)