2009/11/26 Tiago F. Zacchi <tiago_zac...@yahoo.com.br>: > > Olá pessoal, > Criei uma dll em delphi, nesta dll uma função que retona uma String. > Estou querendo acessar esta dll e utilizar o retorno da função no c++, mas > estou tendo problemas com o tipo String. Se uso o retorno da função como > Integer funciona legal, mas com String não.
Talvez você consiga declarando a string como widestring, contanto que o c++ tenha suporte. Do contrário você terá que trabalhar com pchar. O tipo string do delphi é internamente um pchar gerenciado, você pode fazer o cast direto de string para pchar. O que você não vai conseguir é fazer com que a string seja o retorno de uma função, porque isto exige que a string seja criada em uma aplicação e destruida na outra. Toda área de memória criada em uma aplicação deve ser destruida por essa mesma aplicação. Salvo engano você terá que fazer algo assim: Chamada(PChar, Tamanho); Quem chama a rotina abre um espaço com "Tamanho" bytes e referencia essa área em PChar. Quem é chamado popula aquela área de memória com a informação. Por fim, quem chama a rotina pega a informação e desaloca a memória depois que utilizar. Você pode ainda usar outro truque, tal como criar um record e fazer com que "Chamada" crie e popule esse record pra você com as informações que você precisa. Depois que você pegar suas strings e o que mais precisar, você chama outra procedure que destrua esse record criado anteriormente. Assim tudo é criado e destruído sempre pela mesma aplicação. Joao Morais