![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Надо загрузить функцию из DLL написанной на C... [D6, Win95/98, Win2k]
Tom © (2004-06-22 10:58:00)Помогите пожалуйста!!!
Надо загрузить следуюшую функцию из DLL написанной на C:
Итак имеется такое обьявление :
void EXPTYPE FSL_SetUI(void *fnAbortRetry, void *fnError, void *fnWarning);
И приводится пример вызова в C:
INT16 WINAPI MyAbortRetry(BYTE *strTitle, BYTE *strMessage)
{
int iRet = MessageBox(NULL, strMessage, strTitle, MB_RETRYCANCEL | MB_ICONERROR);
if(iRet == IDRETRY) return(1);
return(0);
}
void WINAPI MyMessageError(BYTE *strTitle, BYTE *strMessage)
{
MessageBox(NULL, strMessage, strTitle, MB_OK | MB_ICONERROR);
}
void WINAPI MyMessageWarning(BYTE *strTitle, BYTE *strMessage)
{
MessageBox(NULL, strMessage, strTitle, MB_OK | MB_ICONWARNING);
}
вызов :
FSL_SetUI(MyAbortRetry, MyMessageError, MyMessageWarning);
Теперь надо ее позвать из Delphi,Делаю следующее:
type
ProcedureType = Procedure(str1 : string; str2 : string);
ProcedurePointer = ^ProcedureType;
procedure MyAbortRetry(str1:string ; str2:string);
procedure MyMessageError(str1:string ; str2:string);
procedure MyMessageWarning(str1:string ; str2:string);
procedure FSL_SetUI (fnAbortRetry:ProcedurePointer ; fnError : ProcedurePointer; fnWarning:ProcedurePointer); stdcall; external 'rapidsign.dll' name 'FSL_SetUI';
И вызов :
FSL_SetUI(@MyAbortRetry,@MyMessageError,@MyMessageWarning);
Видимо допускаю грубую ошибку потому 4то выдает
"Access Voilation".
Tom (2004-06-22 11:09:00) [1]Спасибо Люди!!!
>>Digitman
Ввек вас незабуду!!! Всегда мне помогаете!!! :)
Digitman (2004-06-22 11:04:00) [2]type
ProcedureType = Procedure(str1, str2 : PChar); stdcall;
procedure MyAbortRetry(str1, str2 : PChar); stdcall;
procedure MyMessageError(str1, str2 : PChar); stdcall;
procedure MyMessageWarning(str1, str2 : PChar); stdcall;
procedure FSL_SetUI (fnAbortRetry:Pointer ; fnError : Pointer; fnWarning:pointer); stdcall; external 'rapidsign.dll' name 'FSL_SetUI';
clickmaker (2004-06-22 11:02:00) [3]procedure MyAbortRetry(str1: PChar ; str2: PChar);