|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Передача массива из DLL в основную программу
В 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; ... |