在delphi7中使用vc编写的一个ocx控件,注册并导入这个控件后,发现有一个接口函数InputData,它是要将数据缓冲区的指针,和缓冲区数据长度传给这个函数,原本是:long InputDate(long *plDate, long lDataLen);//plData—指向缓冲区的指针,lDateLen—缓冲区的长度。当我将该控件导入到delphi中后,这个接口函数的参数就变成下面类型:InputVideoData(var pData:Integer,lDataLen:Integer):Integer;请教一下,我如何将缓冲区的指针(Array of byte或TStream)传给pData呢?或者有其它什么方法解决呢?谢谢!

解决方案 »

  1.   

    var
    pData: integerTStream.writeBuff(pData,sizeof(integer));
      

  2.   

    delphi中间是否对参数的类型要求不一样
      

  3.   

    InputVideoData(var pData:Integer,lDataLen:Integer):Integer; 参数var pData:Integer表示的是不是可变的数据类型?将流中数据读到缓冲区里:
    var 
    pData: integer TStream.ReadBuff(pData,count);然后在调用InputData(var pData:Integer,lDataLen:Integer):Integer;可以吗?
    InputData(pData,count);
      

  4.   

    TStream.ReadBuff(pData,count); 
    写到pData里以后,可以看一下pData里的数据!
    调用InputData(var pData:Integer,lDataLen:Integer)不是用返回值吗?
    跟据定义的返回值来判断正确与否.
      

  5.   

    首先非常感谢啊*菠萝的答复!我想把流(TStream)中的数据读到缓冲区(pData)里,然后再将缓冲区里的数据送给InputData(var pData:Integer,lDataLen:Integer);我是否可以按下面这样编写代码:首先定义缓冲区pData:
    var
    pData: integer ;然后将流中的数据读到写入pData:
    TStream.ReadBuff(pData,count);  最后将pData传递给InputData(var pData:Integer,lDataLen:Integer):
    InputData(pData,lDataLen);我不明白将pData定义成integer型,pData也可以像数组一样使用吗?请指教!!! 
      

  6.   

    不明白你说的数组什么意思?
    var pData:Integer,lDataLen:Integer;其实 ldataLen  的长度应该是sizeOf(integer)=4;
    在32位操作系统中这是个固定的值!
    根据这个看一下.如说得不对请大家指正!
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : Integer;
    begin
      i := 10000;
      ShowMessage('i的大小'+inttostr(sizeof(i)));
      ShowMessage('Integer大小:'+ IntToStr( SizeOf(Integer)));
    end;
      

  7.   

    我的目的可能描述的不太清楚,我下面重新描述一下:在delphi7中使用vc编写的一个ocx控件,我要使用它的一个接口函数,把我从网络中通过idudpserver接收的数据流传给这个函数进行处理,这个函数的原形是: long InputDate(long *plDate, long lDataLen);
      //plData—指向数据缓冲区的指针
      //lDateLen—缓冲区的长度。 当我将该控件导入到delphi中后,这个接口函数的参数就变成下面类型: InputData(var pData:Integer,lDataLen:Integer):Integer;发现参数pData由“long *plDate”变成了“var pData:Integer”,就不知道如何处理了。我用下面的方法能实现吗?请指教!非常谢谢!procedure TFormMain.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    var 
      pData: integer ; 
      lDataLen:Integer;
    begin
      lDataLen:=AData.Size/4;          //接收流的长度
      AData.ReadBuffer(pData,lDataLen);//从流中读出全部数据
      InputData(pData,lDataLen);       //将数据传给InputData处理
    end ;
      

  8.   

    lDataLen:=AData.Size;
    InputData(pData,lDataLen);  
      

  9.   

    少加一行,加到第二行!
    AData.ReadBuffer(pData,lDataLen);