我在我的应用程序有以下功能:为什么打印PChar到控制台时会出现问号?
function GetDeviceChannelInfo_HSI(PortNumber, Address, ChNumber: Integer;
var State: Integer): PChar; stdcall; external DLL_FILENEAME;
所有我想要做的就是打印这样的结果到控制台。尽管如此,当我拨打电话WriteLn
时,我得到的全部是???????????
作为回应。
我假设控制台不知道如何打印这个。也许它是Unicode或者什么,它不能被打印?
我是Delphi新手,真的不知道为什么会这样。我是否真的在打印指针地址?我真的不知道。任何帮助,将不胜感激。
你确定函数声明是正确的吗?大多数DLL调用要求您提供它们填充的缓冲区;您分配缓冲区,将其传入,并返回缓冲区填充DLL信息。返回PChar类型是非常不寻常的,因为DLL将分配内存和指针返回到它的调用应用程序,它没有办法释放它(除非他们都在Delphi/C++ Builder的编制和使用'ShareMem' )。你从哪里得到你正在使用的声明? – 2012-04-06 19:49:33
将PChar更改为PAnsiChar,问题消失。这不是一个重复的约30个其他问题,来自那些没有把Ansi交给Unicode delphi类型的人('PChar'用于表示'PAnsiChar',现在它意味着'PWideChar') – 2012-04-07 18:48:41