Delphi中调用Windows API时参数类型的转换(100分)

  • 主题发起人 主题发起人 yz
  • 开始时间 开始时间
Y

yz

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi中调用WIN API时,常常因API参数类型不必配而出错,清高手指点一下<br>Windows API与Delphi变量类型的是如何对应的?因该如何调用比较合适?有无参考资料?
 
主要就是Pchar和string的问题而已,注意就是了,哪来那么多的类型不匹配?
 
请给出例子,如何不匹配
 
补充:<br>必要时还得用类型转换。如有些Api函数,lparam参数在Delphi被定义为LongWord,<br>但在Api函数中有时是作为指针变量来用的,这是就需要强制类型转换。<br><br>
 
wjiachun近日是否贵体欠恙?语气总是这么厉害。<br>玩笑,别介意。:)
 
主要就是PCHAR的问题,而且绝大多数API delphi已经做了封装,看看source下面的文件<br>参考一下就行了。
 
var<br>s :string;<br>begin<br>setlength(s,256); //重要!首先给字符串分配空间<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //调用A P I 函数,S 现在包含目录字符串<br>getwindowsdirectory(pchar(s),256)<br>RealizeLength(S);
 
RealizeLength? 有这个函数吗?
 
字符串不是Pchar,分配空间是怎么回事啊?
 
var<br>&nbsp;username:array[0..30] fo char;<br>&nbsp;size:word;<br>begin<br>&nbsp;size:=sizeof(username);<br>&nbsp;fillchar(username,size,''); 復位<br>&nbsp;getusername(username,size);<br>end;<br>以上代碼在winNT和win9x 中運行正常
 
P开头的变量是指针,<br>PByte=^Byte;<br>Pchar是Windows的C函数的数据类型。要动态分配内存,并手工释放。<br>《 Delphi5开发人员指南〉中有例子。<br>可看看MIcroSoft的Win32API开发人员参考手册 第一辑。
 
who有MicroSoft的Win32API开发人员参考手册 第一辑?
 
结束了,大家分分吧!
 
后退
顶部