|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Передача массива в DLL
Добрый день, столкнулся с проблемой передачи массива в DLL (сама DLL написана на С). Суть в том, что в одном из параметров процедуры должен получится массив с данными.
Описание процедуры в интерфейсной части: function nc_get_vara_double (ncID: integer;varID: integer;start: pointer;count: pointer;var arr: pointer):integer; cdecl; external 'netcdf.DLL'; arr - это и есть желаемый массив. в самой программе вызывается так: var ptr: pointer; start,count: Array of int64; hgtId: integer; .... err:=nc_get_vara_double(ncID,hgtID,start,count,ptr ); если я хочу получить 1 число, то проблем нет, все работает. А вот если я хочу получить вектор или матрицу то получаю следующее: Описание самой процедуры: http://www.unidata.ucar.edu/software/netcdf/docs/group__variables.html#ga3b772c0982850cb0af3a8d1c53 c81d46 |
#2
|
||||
|
||||
Указатель на первый элемент динамического массива @Arr[0]
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Если
int nc_get_vara_double ( int ncid, int varid, const size_t * startp, const size_t * countp, double * ip ) то Код:
type PInteger=^Integer; PDouble =^Double; function nc_get_vara_double (ncid:Integer; varid:Integer; startp:PInteger; countp:PInteger; ip :PDouble; ) :Integer;cdecl; external 'netcdf.DLL'; Код:
var ptr: Array of Double; start,count: Array of int64; hgtId: integer; .... err:=nc_get_vara_double(ncID,hgtID,@start[0],@count[0],@ptr[0] ); |
#4
|
|||
|
|||
Спасибо, все заработало!
|