[EMAIL PROTECTED] wrote:

> criei uma dll com uma funcao q recebe dois parametros "BufferIn e
> BufferOut: PChar".
> o problema é q o valor a ser passado para BufferIn contem caracteres
> NULL (Chr(0)).
> O conteudo de BufferOut podera conter chr(0) tambem.
> Sendo o caracter finalizador do PChar, o proprio chr(0), o valor de
> BufferIn
> chega truncado na funcao.
> 
> Estou evitando usar parametros com string, pois teria q distribuir a
> dll de gerencia
> de memoria e adicionar no uses a unit sharemem em todos os prg q
> chamam a dll.
> 
> O tamanho do conteudo varia, podendo chegar a 2000 bytes.
> Uma solucao seria passar os parametros como array of char. Mas fiquei
> na duvida de
> como passar um array por parametro para dll.
> 
> Se tiver alguma dica, sera bem vinda.
> 
> Valeu!

Bom, não levo muito jeito para DLLs mas vou tentar contribuir.

Cria uma estrutura:

TMyBuffer = record
   Len: Longint;
   Buffer: array [0..2047] of Char;
end;

no programa e na DLL. No programa passe @VarMyBuffer, e na DLL receba 
como um Pointer. Por fim, use um cast:

TMyBuffer(VarPointer^).Len
TMyBuffer(VarPointer^).Buffer

para acessar o comprimento e o Buffer. Corre o risco de funcionar ;-)


--
João Morais


-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a