djdtyfhu
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Определение функции в Фортране: Код: subroutine CALL_READ_STRING(pa_string,N_File,Name_REC) ! !DEC$ ATTRIBUTES stdcall,reference :: CALL_READ_STRING не использую, а может надо? ! !DEC$ ATTRIBUTES VALUE :: Name_Rec !DEC$ ATTRIBUTES DLLEXPORT :: CALL_READ_STRING CHARACTER*4 string(4,250) character(*) N_File CHARACTER*8 Name_REC pointer(pa_string,string) ! присваиваю указатель на внешнюю структуру данных (из Delphi) OPEN(8,FILE=N_File,ACCESS='DIRECT',status='old',RECL=4000) CALL FREADC(8,Name_REC,string) ! читаю данные в string end subroutine CALL_READ_STRING | В Delphi описал внешнюю функцию: Код: procedure CALL_READ_STRING(str: pstring_type; namefile: pchar; len: integer; name_rec: pchar; len2:integer); stdcall; external 'DLL_GEFEST.dll'; | str - это pa_string в Фортране namefile - это N_File в Фортране len - длина имени namefile (требуется для правильной передачи параметров) name_rec - это Name_REC в Фортране len2 - длина имени Name_REC (требуется для правильной передачи параметров) Пример вызова внешней функции: Код: var mas3 : pstring_type; begin NEW(mas); FIleName:='c:\52MKK\F1'; Name_Rec:='CHERTEZH' CALL_READ_STRING(@mas3,FileName, length(FileName),Name_Rec,8); end; |
|