Имеется библиотека, написаная на делфи, из готорой необходимо вызвать процедуру
Документация к ней гласит такое:
type TINPUT = array[1.. 9] of double; TOUTPUT = array[0..39] of double; procedure CALCULATION( var z1 : integer; var z2 : integer; var INPUT : TINPUT; var z3 : integer; var z4 : integer; var OUTPUT : TOUTPUT); stdcall;
Где z1, z2, z3, z4 - вспомогательные переменные не несущие глобального смысла и необходимые для работы этой библиотеки в VBA (в C# я передавал нули и всё было ок)
INPUT и OUTPUT - массивы типа double.
Делаю:
from ctypes import * myLib = cdll.LoadLibrary("D:\\ROTOR.dll") input = [1013,3000,-22,90,3000,20,40,3,600] output = [] z1 = 0 z2 = 0 z3 = 0 z4 = 0 myLib.CALCULATION(z1, z2, input, z3, z4, output)
Получаю:
ArgumentError: argument 3: <type 'exceptions.TypeError'>: Don't know how to convert parameter 3
Задним умом понимаю, что проблема в том, что библиотека просит массив double, а я посылаю ей int. (ну, если поставить точки - то float).
Какой порекомендуете вариант?
Заранее благодарен