有关 Integer 与 PChar 换算的问题!(100分)

  • 主题发起人 主题发起人 ndren
  • 开始时间 开始时间
N

ndren

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序当中用了 SendMessage(IP, WM_GETTEXT, 20, Integer(@TempText));<br><br>因为是想写SDK程序!因此只加入了 Windows, Shellapi, Messages, commctrl 这四个头文件!<br><br>可是在编译的时候系统提示:[Error] Incompatible types: 'Integer' and 'PChar'<br><br>这是为何?还请各位高手帮我!感谢!
 
TempText是什么类型的数据?
 
var<br>&nbsp; TempText:string;<br>begin<br>&nbsp; SetLength(TempText,21);<br>&nbsp; SendMessage(IP, WM_GETTEXT, 20, Integer(PChar(TempText)));<br><br>
 
integer 是个整形,pchar是个指针,恐怕变量不能代替指针把。为何用integer()进行强制转换呢?
 
SendMessage(IP, WM_GETTEXT, 20, Integer(@TempText));<br>中的Integer(@TempText) 最好用 longint(temptext) ,并且它只是用TempText的前四个字节进行转换,转换的结果就的看前四个字节了<br>
 
SendMessage(IP, WM_GETTEXT, 20, Integer(PChar(TempText)));
 
你测试通过就OK了,这些你以后慢慢就会明白了,现在先抄着再说,
 
SendMessage(IP, WM_GETTEXT, 20, Integer(@TempText[1]));<br>
 
其实你这样发消息只是测试程序的可行性,<br><br>但是如果真的发消息的话,这样做会带来不必要的操作
 
这是 TempText 的数据格式:TempText: array[0..20] of Char = '';<br><br><br>大家要注意到我这个是写SDK程序!因此只加入了 Windows, Shellapi, Messages, commctrl 这四个头文件!就出了不能编译并且出现错误提示的这样情况!<br><br>我在写普通的基于VCL程序的情况下一切都可以正常编译!
 
没有高手可以帮我了吗?
 
下面的程序我编译通过,没有发生任何警告或提示:<br><br>program Project1;<br><br>uses<br>&nbsp; Windows, Shellapi, Messages, commctrl;<br><br>{$R *.res}<br><br>var<br>&nbsp; TempText: array[0..20] of Char = '';<br><br><br>begin<br>&nbsp; //激活开始菜单<br>&nbsp; SendMessage(GetDesktopWindow, WM_SYSCOMMAND,<br>&nbsp; &nbsp; SC_TASKLIST, Integer(@TempText));<br>end.<br>
 
是不是你的IP的数据类型不对啊?
 
我已经搞定了!
 
后退
顶部