![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#2
|
|||
|
|||
|
Короче оказалось что работа с массивами в Делфях и Шапре отличаются маленько, для делфей решение оказалось таким:
Описание Код:
function someFunc(A0, A1, A2, B: Pointer; Len: Integer): Integer; cdecl; external 'someDLL.dll'; Работа Код:
var
r: Integer;
a1, a2: array[0..0] of Integer;
aB: Pointer;
len: Integer;
rec: SomeRecord;
begin
r := 0;
len := 65535;
aB := nil;
aB:= AllocMem(len);
//a0 - глобальная переменная, с ней проблем нет,
//иначе библиотека выкинет исключение
r := someFunc(a0, @a1[0], @a2[0], aB, len);
if(r > 0)then
case a2[0] of
SOME_CONST: begin
CopyMemory(@rec, aB, SizeOf(rec));Если коротко и словами, то все уперлось в то что к массивам нужно обращаться через указатель. |