[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