我似乎无法找到任何信息或理解为什么编译器抛出错误"E2029'OF''''''''''当我尝试使用静态数组而不是动态时.
我正在调用函数形成一个DLL文件,所以我有这个代码:
function RetrieveDSOData(whatchannels: uchar; var DSOCH1, DSOCH2: array of double;
var LADATA: array of ushort; Nth_Sample: uchar): longint;
stdcall; external 'E_l80.dll';
Run Code Online (Sandbox Code Playgroud)
这编译好,但我在DLL文件中有AV错误,因为我怀疑问题是动态数组没有指定大小,我想把它抛出一个静态数组.
但是,如果我用上面的函数编写
DSOCH1, DSOCH2: array [0..31] of double;
Run Code Online (Sandbox Code Playgroud)
我得到上面提到的编译器错误.
附加信息:我有如何使用这个为C编写的DLL的说明,因为我几乎不知道它,我可能会遗漏这些数组周围的其他东西:这是原始函数:
long RetrieveDSOData(unsigned char whatchannels, double *DSOCH1,
double *DSOCH2, unsigned short *LADATA, unsigned char Nth_Sample)
Run Code Online (Sandbox Code Playgroud)
有这样的解释:
*DSOCHX: A pointer to an array of points from the DSO channels.
*LADATA: A pointer to an array of LA data
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.(并且请不要仅仅因为删除这最后一句而编辑这个问题......没有意义......)
定义类型,然后使用该类型.
type
TDSOArray = array[0..31] of double;
function RetrieveDSOData(whatchannels: uchar;
var DSOCH1, DSOCH2: TDSOArray;
var LADATA: array of ushort;
Nth_Sample: uchar): longint; stdcall; external 'E_l80.dll';
Run Code Online (Sandbox Code Playgroud)
这至少可以解决编译器错误.我对你如何从DSO通道中的一系列点到双倍的数组[0..31]感到困惑.我不能回答你的问题的其余部分或者,出于同样的原因-我不知道是什么LA数据是,所以我不知道你是怎么到USHORT阵列的 LADATA参数.