darth_ivan Postado Fevereiro 13, 2007 Denunciar Share Postado Fevereiro 13, 2007 E ai pessoal, estou querendo passar uma string em uma dll, mas nas DLLs so é permitido passar shortstring... sera que alguém poderia me ajudar???Valeu galera Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Fevereiro 13, 2007 Denunciar Share Postado Fevereiro 13, 2007 OpaBom pra passar strings entre DLLs somente há um jeito,usando gerenciadores de memória, que faz o trabalhode limpá-la da memória...Agora caso não queira usar gerenciadores de memóriasomente é possível se você usar ShortStrings ou PChars,lembrando que uma função não pode retornar PChar ondevocê tem que fazer como a API do Windows faz, passaro ponteiro apenas e preenche-lo com o conteúdo conformeo tamanho do Buffer...Funções não podem retornar PChar pois vai deixar buracosna memória (Memory Leaks) e assim seu programa vai causarum grande estouro de pilha e retornar alguns access violationsEste 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 typelibrary e referencia-lo como a primeira Unit do seu Projeto (Menu Project / View source)...Exemplo:program MyProgram;usesFastShareMem,...* 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 darth_ivan Postado Fevereiro 14, 2007 Autor Denunciar Share Postado Fevereiro 14, 2007 valeu pela dica cara,mas agora estou encontrando um outro problema, optei por usar um pchar já que o shortstring não é suficiente, mas na hora de retornar o valor, preciso retornar um ole variant, mas o dado é um pchar...Sera que tem como converter um pchar em um OLe Variant??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Fevereiro 14, 2007 Denunciar Share Postado Fevereiro 14, 2007 Opa,Tente usar polevariant ao invés de pcharabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
darth_ivan
E ai pessoal,
estou querendo passar uma string em uma dll, mas nas DLLs so é permitido passar shortstring... sera que alguém poderia me ajudar???
Valeu galera
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.