在dll中有用vc++编写的函数:HANDLE OpenCommPort(LPCSTR PortNum, DWORD BaudRate)
portNum表示端口号(com1,com2),BaudRate表示通信速率(2400,4800,9600...),这个函数是在dll中定义,用来获取句柄的。当我在delphi中调用的时候,调用正确返回端口句柄,否则返回(INVALID_HANDLE_VALUE),值为-1。
我书写的是:function OpenCommPort(portnum:pchar;baudrate:word):thandle stdcall; external  'dll名称';
调用代码:
procedure TForm1.ButtonClick(Sender: TObject);
var
hcom:thandle;
begin
 hcom:=OpenCommPort(portnum,baudrate);
//应该怎么判断值啊,我是想是定义类还是函数,要多次对值进行判断,方便以后的使用。但是怎么定义呢?
end;
还有我想问,这样的调用方法可以获得端口的句柄吗?我怎么可以知道我调用正确呢?

解决方案 »

  1.   

    if (hcom <> -1) and (hcom <> 0) then
    begin
      //你的操作
    end;
    应该这样就可以了吧!
      

  2.   

    这样可以用的.
    hcom:定义成全局的变量,端口打开后,这个句柄可以在任何地方使用。
    if hcom<>INVALID_HANDLE_VALUE then
    beginend;
      

  3.   

    正常的Thandle类的返回类型是什么啊?Integer?
      

  4.   

    INVALID_HANDLE_VALUE 是有值的啊?-1
    对hcom<>INVALID_HANDLE_VALUE 的判断就是对值的判断吗?
      

  5.   

    THandle是一个LongWord
    Longword 0..4294967295 unsigned 32-bit
      

  6.   

    INVALID_HANDLE_VALUE 是返回的提示信息吧!
      

  7.   

    就是判断hcom是不是返回错误。
    hcom<>INV*****,就是说该句柄返回正确,可以使用。
      

  8.   

    谢谢大家的关注!尤其是gzmhero(hihihi)。
    但是我现在的真正头痛的问题是关于串口通讯的,不知道大家有没有这个方面的研究,有的话请见我另一个贴子!http://community.csdn.net/Expert/topic/3811/3811808.xml?temp=.1052057
      

  9.   

    ocx控件和dll是怎么进行数据传递的啊!?