Frage

In einer dll Build mit Delphi 2006

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

In einem ausführbaren gebaut mit Delphi 2010

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

Der Schritt in die dll, aPath = '123'. In der Tat wird jede Saite, die ich passiere Schnitt genau in zwei Hälften.

1.) Warum ist mein wörtliches Wesen halbiert? 2.) Wie kann ich das Problem beheben?

War es hilfreich?

Lösung

Stellen Sie sicher, dass der _foo Parameter ist ein Wide 2010

Andere Tipps

residieren Wide in Haufen von Windows und nicht von Delphi Speichermanager geführt werden. So Wide (im Gegensatz zu anderen langen String-Typen) zwischen exe und dll problemlos geteilt werden.

Ich nehme an, Sie falsche Daten erhalten, weil Wide einen verwalteten Typ und die Speicher-Manager für die DLL sind und die ausführbare Datei ist unterschiedlich. Wenn Sie die dll make aPath Typ neu kompilieren kann PWideChar

sein
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top