我用labview写了一个DLL,其原型如下:
long __stdcall TestIntArray(TD3Hdl *Ay);typedef struct {
long dimSize;
long Numeric[1];
} TD3;
typedef TD3 **TD3Hdl;想在DELPHI中用调用,请问delphi中如何写声明函数,尤其是结构类型中的“long Numeric[1]”如何定义。
初来贵地,谢谢指点,十分感谢。
long __stdcall TestIntArray(TD3Hdl *Ay);typedef struct {
long dimSize;
long Numeric[1];
} TD3;
typedef TD3 **TD3Hdl;想在DELPHI中用调用,请问delphi中如何写声明函数,尤其是结构类型中的“long Numeric[1]”如何定义。
初来贵地,谢谢指点,十分感谢。
typedef struct {
long dimSize;
long Numeric[1];
} TD3;
typedef TD3 **TD3Hdl;
=》
type
PPTD3=^PTD3;
PTD3=^TD3;
TD3=record
dimsize:LongInt;
Numeric:array[0..1] of LongInt;
end;
long __stdcall TestIntArray(TD3Hdl *Ay);
=>
function TestIntArray(ay:PPTD3):Longint;stdcall;extern '';
PTD3=^TD3;
PPTD3=^PTD3;
TD3=record
dimsize:integer;
Numeric:array[0..1] of integer;
end;implementation
Function TestIntArray(a:PPTD3):integer;stdcall;external'LabLib.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
a:PTD3;
begin
new(a);
a.dimsize:=1;
a.Numeric[1]:=2;
TestIntArray(@a);
dispose(a);
end;
是1个元素的数组,用Delphi表示应该是:Numeric: array[0..0] of Longint;
也是可以的
这里的函数实际上是接受动态数组的。
typedef struct {
int32 cnt; /* number of bytes that follow */
uChar str[1]; /* cnt bytes */
} LStr, *LStrPtr, **LStrHandle;typedef struct {
long dimSize;
LStrHandle String[1];
} TD2;
typedef TD2 **TD2Hdl;void __stdcall ConvertFRStringArrayToFR(TD2Hdl *Str_FA_Ay, PStr Str_out);
这几天一直为这个问题苦恼,请各位赐教,最好能将完整代码写出,先谢谢了。