Очевидно, что вы не можете передать объект TDataSet
.Это объект FreePascal, и функция, кажется, ожидает указатель на float
(который, вероятно, является указателем на Single
в FreePascal).Вероятно, ожидается двухмерный массив float
.Вы должны передать еще один указатель на float
, а также указатель на структуру FLANNParameters
.
Move()
также не будет работать.TDataSet
не является массивом.
Полагаю, вам придется объявить массив, как сказал Уве, заполнить его набором данных и передать массив:
type
PMyFloatArray = ^TFloatArray;
TMyFloatArray = array[0..4999, 0..1] of Single;
var
MyArray: PMyFloatArray;
idx: flan_index_t;
begin
New(MyArray);
try
// Fill array using your TDataSet...
// set up other parameters...
idx := flann_build_index(MyArray, 5000, 2, &speedup, etc...);
// ...
finally
Dispose(MyArray);
end;
end;
Бесстыдный плаг
Пожалуйста, прочитайте мою статью о проблемах преобразования статью о преобразовании объявлений функций из C в Delphi (и, вероятно, FreePascal на Win32).Теперь я в этом, вы можете прочитать мою статью Обращаясь к указателям тоже.