В DLL у меня происходят вычисления и в основную программу передается массив записей.
Но, почему то после успешной отработки DLL я не могу работать с возвращенными данными
Собственно код...
Код:
Общий класс основной программы и DLL
...
type
TKoef = Record
name: PChar;
abbr: PChar;
val_bgn: real;
val_end: real;
delta: real;
criterion: boolean;
cr_min: real;
cr_max: real;
dev_bgn: boolean;
dev_end: boolean;
dev_bgn_val: real;
dev_end_val: real;
info: PChar;
valid: boolean;
end;
Основная программа
...
type
TArr = array of TKoef;
TPArr = ^TArr;
...
procedure TfMain.mModuleCalcClick(Sender: TObject);
var
Arr: TArr;
PArr: TPArr;
begin
try
try
hDLL := LoadLibrary(PAnsiChar(FN));
@GetModuleData := nil;
if hDLL >= 32 then begin
@GetModuleData := GetProcAddress(hDLL,'GetModuleData');
if (@GetModuleData<>nil) then begin
SetLength(Arr,5);
PArr := Addr(Arr);
if GetModuleData(ORG, PArr) then begin
---> вот здесь я пытаюсь работать с Arr, но вылетают ошибки
end;
end;
end;
finally
@GetModuleData := nil;
FreeLibrary(hDLL);
end;
except
end;
end;
...
DLL
...
const
KOEF_CLOUNT = 5;
type
TArr = array[1..KOEF_CLOUNT] of TKoef;
TPArr = ^TArr;
...
function GetModuleData(dllORG: TOrganization; aPArr:TPArr): Boolean; stdcall;
begin
with aPArr^[1] do begin
...
end;
...
with aPArr^[5] do begin
...
end;
end;
...