vc的ocx是个图像处理,读取图像数据,接口为 byte* R,Byte* G,byte* B,我在delphi中可以得到图像的R,G,B三分量的数组,但不知道如何传给Ocx

解决方案 »

  1.   

    就知道你再DELPHI中得声明有问题,好像在你前面得一个帖子有看到vc 做的ocx参数是 byte* 数组,在delphi中参数定义为 var pcR: Byte 我如何定义并传递参数?? 
    --- 一般 VC用BYTE* 表示传进去得是一个BYTE数组,你外面不能用var pcr: Byte,而应该用
    pcr:PByte; 还有这是一维数组得情况不是叫你把VC里面得函数声明贴出来得?
      

  2.   

    给个例子你领会一下吧:)用VC做个dll//test.hextern "C" __declspec(dllexport) void fnTest(char *);// test.cpp#include "stdafx.h"
    #include "test.h"BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
     )
    {
        return TRUE;
    }void fnTest(char *buf)
    {
    MessageBox(0, buf, "", 0);
    }在Delphi里面调用program Project1;{$APPTYPE CONSOLE}uses
      SysUtils;//同一个函数的两种声明方式!
    procedure fnTest1(var buf: Char); cdecl; external 'test.dll' name 'fnTest';
    procedure fnTest2(buf: PChar); cdecl; external 'test.dll' name 'fnTest';var
      c: array of Char;
    begin
      setlength(c, 20);
      fillchar(c[0], length(c), 0);
      strcopy(PChar(c), 'hello world!');  fnTest1(c[0]);  fnTest2(PChar(c));
    end.
      

  3.   

    你这种情况用fnTest1这种方式调用!
      

  4.   

    vc 做的ocx参数是 byte* 数组,在delphi中参数定义为 var pcR: Byte -- 
    delphi中的声明错了。
      

  5.   

    delphi里面的声明没有错,一般由向导自动生成的函数声明都是将byte *buf转换成var buf: byte,调用方法我在上面已经给出了!