Je travaille sur une DLL dans Delphi 2010. Il exporte une procédure qui reçoit un tableau de variantes. Je veux être en mesure de prendre l'une de ces variantes, et le convertir en une chaîne, mais je continue à obtenir ?????Delphi 2010 variante au problème unicode
Je ne peux pas changer la variable d'entrée - il doit être un tableau de variantes. L'application hôte qui appelle la DLL ne peut pas être modifiée. Il est écrit en Delphi 2006.
code DLL Exemple:
Procedure TestArr(ArrUID : array of variant); stdcall;
var
i: integer;
s: string;
begin
s:= string(String(Arruid[0]));
showmessage(s);
end;
En utilisant D2006 ma DLL fonctionne très bien. J'ai essayé d'utiliser VartoStr
- pas de chance. Quand je vérifie le VarType
j'obtiens un varString
. Des suggestions pour résoudre ce problème?
Vous ne pouvez pas utiliser ShareMem pour résoudre des problèmes entre D2006 et D2010 liés à Unicode/Ansi. Ils utilisent des formes totalement différentes du gestionnaire de mémoire. –
@Ken White vous avez raison, mon erreur. J'ai oublié que embarcadero a changé le gestionnaire de mémoire aussi (maintenant il utilise fastmm). –