![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вызов функции из DLL с передачей массива как параметра [D5]
nikolo © (2002-08-08 14:11:00)У меня в основной программе объявлен тип:
type
TRec = record
Id: Integer;
Name: String[30];
end;
TARec = array of TRec;
var
ARec: TARec;
Мне нужна функция, которая обрабатывает этот массив, но она должна находится в DLL. Подскажите как я могу передавать в эту функцию параметр этого типа, т.е. что-то типа:
Function GetArrVal(Arr: ???): Integer; stdcall; external "my_lib.dll";
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
SetLength(ARec, 2);
ARec[0].Id := 10;
ARec[0].Name := "10";
i := GetArrVal(ARec);
end;
SaS13 (2002-08-08 14:56:00) [1]также выше пропиши все типы и так и объяви =)
nikolo (2002-08-08 14:54:00) [2]А как в самой DLL объявить эту функцию?
function GetArrVal(var Arr: ? ): Integer; stdcall;
begin
end;
SaS13 (2002-08-08 14:16:00) [3]так и есть:
Function GetArrVal(var Arr: TARec): Integer; stdcall; external "my_lib.dll";
у себя в проге (откуда вызываешь), еще раз пропишешь тип:
type
TRec = record
Id: Integer;
Name: String[30];
end;
TARec = array of TRec;
единственное НО передаваемый динамич. массив не должен быть пустым, иначе вывалится с непонятной ошибкой