Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизОбъявление функции Найти похожие ветки
← →
=Guest= (2007-04-06 14:22) [0]Как объявить эту функцию в Delphi
HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi);
← →
Джо © (2007-04-06 14:26) [1]function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint;
Что такое DLLVERSIONINFO — понятия не имею, тебе виднее.
← →
Джо © (2007-04-06 14:26) [2]То есть:
function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint; stdcall;
← →
Джо © (2007-04-06 14:27) [3]Блин, сорри за опечатки, двоеточие забыл.
← →
=Guest= (2007-04-06 14:29) [4]
DLLVERSIONINFO
структура а *pdvi Указатель на структуру.Джо объясните если Вам не составит труда что значит HRESULT CALLBACK
← →
Ega23 © (2007-04-06 14:31) [5]
> function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint;
> stdcall;
Почему stdcall? Почему не cdecl?
← →
Джо © (2007-04-06 15:09) [6]> [5] Ega23 © (06.04.07 14:31)
> Почему stdcall? Почему не cdecl?
Ну... потому, что stdcall :)
> [4] =Guest= (06.04.07 14:29)
> объясните если Вам не составит труда что значит HRESULT
> CALLBACK
HRESULT — это тип возвращаемого результата, HRESULT = type Longint. Можно даже HRESULT сразу писать, он уже описан в System.pas.
CALLBACL - это такая директива (не помню, как точнее), которая описывает функцию как stdcall (то есть, определяет способ передачи параметров при вызове).
← →
Джо © (2007-04-06 15:10) [7]> [5] Ega23 © (06.04.07 14:31)
>
> > function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint;
>
> > stdcall;
>
>
> Почему stdcall? Почему не cdecl?
У меня сейчас на компе нету сишных компилеров и исходников, но вот посмотри описание любой колбэк-функции в МСДН, например:
BOOL CALLBACK EnumWindowsProc( HWND hwnd,
LPARAM lParam
);
← →
Ega23 © (2007-04-06 15:18) [8]
> У меня сейчас на компе нету сишных компилеров и исходников,
> но вот посмотри описание любой колбэк-функции в МСДН, например:
>
Почему именно MSDN? Нет, я понимаю, что это шаблон, по которому stdcall может подставиться. Но пока объявления его не видно, утверждать этого нельзя.
Или я не прав?
← →
Джо © (2007-04-06 15:25) [9]> [8] Ega23 © (06.04.07 15:18)
>
> > У меня сейчас на компе нету сишных компилеров и исходников,
>
> > но вот посмотри описание любой колбэк-функции в МСДН,
> например:
> >
>
>
> Почему именно MSDN? Нет, я понимаю, что это шаблон, по которому
> stdcall может подставиться. Но пока объявления его не видно,
> утверждать этого нельзя.
> Или я не прав?
Да прав, прав, конечно :)
Это у меня тут аврал и голова забита чем угодно, но только не C++
Прошу мои домысли в этой ветке просто CALLBACK считать недействительными...
← →
MBo © (2007-04-06 15:34) [10]из windef.h MSVS
#define CALLBACK __stdcall
обычно CALLBACK - это именно stdcall
← →
Ega23 © (2007-04-06 15:37) [11]
> обычно CALLBACK - это именно stdcall
Верю. Но #define надо всё-же смотреть...
Просто я тоже один раз вот так ошибку ловил полтора дня. А потом выяснилось, что вместо stdcall разработчик dll cdecl поставил.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c