【发布时间】:2011-08-20 14:14:32
【问题描述】:
我正在用 Lazarus/FreePascal(如 Delphi)编写一个 Windows 应用程序。我有一个由 5000 行、2 列 数值填充的 TDataset 对象。
我需要将此数据传递给我从 .dll 库静态导入的 C 函数。
这里是库手册的摘录,解释了它的参数应该采用什么格式:
flan_index_t flann_build_index(float* dataset,
int rows,
int cols,
float* speedup,
struct FLANNParameters* flann_params);
这个函数建立一个索引并返回一个对它的引用。这 此函数预期的参数如下:数据集、行和 cols - 用于指定点的输入数据集: dataset 是指向存储在 row-major 中的 rows cols 矩阵的指针 顺序(每行一个特征)
我可以简单地传递 TDataSet 对象吗?我必须先对它做点什么以使指针的形式正确吗?
【问题讨论】:
-
这是正确的方法吗?移动(数据集,数据指针[0],SizeOf(数据集));
-
不,TDataSet 是一个封装与数据文件或 sql 服务器的连接的类。它没有指向函数预期的数据。
-
没有。 TDataset 具有与函数所需的结构不同的结构。您没有指定矩阵的每个项目的大小,数值有几种类型。抱歉,我无法为使用 Object Pascal 添加 (+1),即使我想这样做 ;-)
标签: c delphi pointers matrix tdataset