delphi7 调用delphi2009的动态库,传递pchar参数 ,出现乱码(100)

  • 主题发起人 主题发起人 luckywangxw
  • 开始时间 开始时间
L

luckywangxw

Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下,调用动态库 显示的结果是乱码,,如果把动态库改成delphi7 则不会出错---动态库delphi2009function showstr(av:pchar):boolean;begin showmessage(av);end;exports showstr;...---调用程序 delphi7var ps:pchar;const atitle='111';begin ps := StrAlloc(255); StrCopy(ps, PChar(atitle)); showstr(ps); StrDispose(p);end;
 
再补充一点,,如果动态库,调用程序,都是delphi2009也不会出现问题
 
Delphi2009 的默认字符使用了 Unicode,也就是说,以前的 string 类型,它理解成 WideString,以前的 PChar 类型,它理解成 PWideChar。你这个代码里,就这样中计啦!
 
请问,小雨哥, 上面的代码该如何修改下呢
 
那么,如果在 Delphi 2009 中要表示原来的 string 如何表示? AnsiString。原来的 PChar 如何表示?对啦,以此类推,就是 PAnsiChar 。你试试看。另外,据杯具的橙子讲,以后 PAnsiChar 都不能替代 Pointer ,它就是指向字符串的指针,而不再是任意类型指针了。这个我没有验证,你可以试试看。
 
very good !!送分
 
小雨哥还在吗? 我在动态库中 strcopy(av, pansichar(aform2.edit2.text));//edit2.text:='bbb';或 av:=pansichar(aform2.edit2.text);调用程序返回的 却是'b',不是'bbb' ,,这又是为什么呢
 
后退
顶部