Domanda

In un accumulo DLL con Delphi 2006

Foo(aPath: widestring);
begin
  _rootPath := aPath;
end;

In un eseguibile costruito con Delphi 2010

_Foo := GetProcAddress(FooModule,’Foo’);
_Foo(‘123456’);

Facendo un passo nel dll, alinea = '123'. In realtà qualsiasi stringa passo viene tagliato esattamente a metà.

1). Perché è il mio letterale viene dimezzato? 2.) Come posso risolvere il problema?

È stato utile?

Soluzione

Assicurati che il parametro _foo è un WideString nel 2010

Altri suggerimenti

WideStrings risiedono in mucchio di Windows e non sono gestiti dal gestore di memoria Delphi. Così WideStrings (a differenza di altri tipi lungo arco) possono essere condivisi tra EXE e DLL senza problemi.

Suppongo che si ottiene i dati errati a causa WideString è un tipo gestito e il gestore della memoria per la DLL e l'eseguibile sono diversi. Se è possibile ricompilare la DLL rendere tipo alinea essere PWideChar

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top