Ir para conteúdo
Fórum Script Brasil
  • 0

Passar String Na Dll


darth_ivan

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

Opa

Bom pra passar strings entre DLLs somente há um jeito,

usando gerenciadores de memória, que faz o trabalho

de limpá-la da memória...

Agora caso não queira usar gerenciadores de memória

somente é possível se você usar ShortStrings ou PChars,

lembrando que uma função não pode retornar PChar onde

você tem que fazer como a API do Windows faz, passar

o ponteiro apenas e preenche-lo com o conteúdo conforme

o tamanho do Buffer...

Funções não podem retornar PChar pois vai deixar buracos

na memória (Memory Leaks) e assim seu programa vai causar

um grande estouro de pilha e retornar alguns access violations

Este artigo é muito interessante e fala sobre isso...

O melhor gerenciador de memória ou um dos é o FastShareMem,

neste artigo fala sobre também...

Pra usar é só você colocar em uma pasta que esteja na sua type

library e referencia-lo como a primeira Unit do seu Projeto

(Menu Project / View source)...

Exemplo:

program MyProgram;

uses

FastShareMem,

...

* Lembrando que você deve fazer o mesmo tanto pra EXE quanto DLL

* ShortStrings tem limite de 255 caracteres

* PChars são apenas ponteiros, você precisa passar uma área de memória válida

ou fazer alocação e desalocação de memória (GetMem, StrAloc, FreeMem, ...)

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...