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.

Outro problema que ocorre as vezes é que 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 ja encontrou "a solução" real para criação de DLLs em delphi??

Abraços
Alemao


[As partes desta mensagem que não continham texto foram removidas]

Responder a