WideString problema de compatibilidade em Delphi
-
20-09-2019 - |
Pergunta
Em uma compilação dll com Delphi 2006
Foo(aPath: widestring);
begin
_rootPath := aPath;
end;
Em um executável construído com Delphi 2010
_Foo := GetProcAddress(FooModule,’Foo’);
_Foo(‘123456’);
Entrando no dll, aPath = '123'. Na verdade, qualquer seqüência de eu passar recebe corte exatamente no meio.
1.) Por que o meu ser literal metade? 2.) Como faço para corrigir isso?
Solução
Certifique-se o parâmetro _foo é um WideString em 2010
Outras dicas
widestrings residem na pilha do Windows e não são gerenciados pelo gerenciador de memória Delphi. Então widestrings (ao contrário de outros tipos de longo string) pode ser compartilhado entre exe e dll sem problemas.
Eu suponho que você obter dados errados porque WideString é um tipo gerenciado eo gerenciador de memória para o DLL e o executável são diferentes. Se você pode recompilar o tipo dll make aPath ser PWideChar