那位fw可以抽空给我解释一下olecheck?(0分)

  • 主题发起人 主题发起人 jh_muse
  • 开始时间 开始时间
J

jh_muse

Unregistered / Unconfirmed
GUEST, unregistred user!
我在看delphi中的demo,例子是用listview显示本地磁盘内容,其中有这么两句,我试了<br>一下,可总出现下面的错误<br><br>&nbsp; SendMessage(ListView.Handle, LVM_SETIMAGELIST, LVSIL_NORMAL, ImageListHandle);<br>&nbsp; OLECheck(SHGetSpecialFolderLocation(Application.Handle,CSIDL_DRIVES,NewPIDL));<br><br>undeclared identifier 'LVM_SETIMAGELIST'<br>undeclared identifier 'LVSIL_NORMAL'<br>undeclared identifier 'OLECheck'<br>请问为何?可否告诉我原因!<br>&nbsp; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,<br>&nbsp; ComCtrls, StdCtrls, ToolWin, ShlObj, ImgList, Menus;<br>这些是uses中的<br>
 
olecheck() &nbsp;是判断一个接口的方法的返回值是不是成功的,<br>就是判断HResult的值,因为HResult是按不同的位来表示结<br>果的正确和错误,正确有不同的正确方法,通过不同的<br>HResult的位来表示,错误的原因也在HResult的位里面<br>HResult是一个4字节的数,可以说是integer也可以说是longword<br>
 
那上面的问题怎么解决呢?<br>他为什么总说undeclared identifier 'OLECheck'?
 
因为你少引用了一个单元文件:<br>&nbsp; uses ComObj;
 
那我怎么知道这些单元文件何时需要加?<br>有没有这方面的介绍?例如什么样的功能或属性需要加什么单元文件?
 
这个东东很简单吗,其实就是判断你COM操作的返回码是不是S_OK,如果不是的话那么它就会抛出一个异常。<br>它类似于Win32Check这个函数。
 
你选中OLECHECK(),按F1,就可以看到这个函数的帮助了,上面就有这个函数的所在单元<br>,COPY到你的代码里就OK了<br>
 
拿这两句是为什么?<br><br>undeclared identifier 'LVM_SETIMAGELIST'<br>undeclared identifier 'LVSIL_NORMAL'
 
这好象是两个WINDOWS消息,你加上messages这个单元就OK了
 
LISTVIEW的消息的预定义常量吗。自己查MSDN就可以了。
 
可我已经加上MESSAGES了,为什么还是不行?
 
请问我怎么才能知道我用到的哪些东西需要在uses中声明?<br><br>我不能每次都要现找吧或将他们一一记下来,那位有好的方法?
 
告诉你一个百试百灵的方法,使用WIN98以上版本的搜索文字中包含文件的功能,搜索VCL源码的目录。
 
可是我想知道的就是哪些命令必须用uses声明,并且声明成什么?<br><br>这方面没有文字的显著说明吗?只能凭经验?
 
一般的消息都声明在message这个单元中,你可以直接包含它。
 
如果不知道Uses,查帮助,帮助里说得很详细的
 
delphi本身的关于WINSDK的文档是MS的,使用的是C描述,肯定没有介绍需要让你包含的单元。<br>使用我上面说的办法查一下便知吗。
 
你可以找定义TListView的VCL单元,他里面一定使用了那几个消息,通过他你就可以找到<br>定义那几个消息的单元。
 
后退
顶部