Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Объявление функции [D7, XP]


=Guest= ©   (2007-04-06 14:22:00) 

Как объявить эту функцию в Delphi
HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi);


Ega23   (2007-04-06 15:37:00) [1]


> обычно CALLBACK - это именно stdcall


Верю. Но #define надо всё-же смотреть...
Просто я тоже один раз вот так ошибку ловил полтора дня. А потом выяснилось, что вместо stdcall разработчик dll cdecl поставил.


MBo   (2007-04-06 15:34:00) [2]

из windef.h MSVS
#define CALLBACK    __stdcall

обычно CALLBACK - это именно stdcall


Джо   (2007-04-06 15:25:00) [3]

> [8] Ega23 ©   (06.04.07 15:18)
>
> > У меня сейчас на компе нету сишных компилеров и исходников,
>
> >  но вот посмотри описание любой колбэк-функции в МСДН,
> например:
> >
>
>
> Почему именно MSDN? Нет, я понимаю, что это шаблон, по которому
> stdcall может подставиться. Но пока объявления его не видно,
> утверждать этого нельзя.
> Или я не прав?

Да прав, прав, конечно :)
Это у меня тут аврал и голова забита чем угодно, но только не C++
Прошу мои домысли в этой ветке просто CALLBACK считать недействительными...


Ega23   (2007-04-06 15:18:00) [4]


> У меня сейчас на компе нету сишных компилеров и исходников,
>  но вот посмотри описание любой колбэк-функции в МСДН, например:
>


Почему именно MSDN? Нет, я понимаю, что это шаблон, по которому stdcall может подставиться. Но пока объявления его не видно, утверждать этого нельзя.
Или я не прав?


Джо   (2007-04-06 15:10:00) [5]

> [5] Ega23 ©   (06.04.07 14:31)
>
> > function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint;
>
> >  stdcall;
>
>
> Почему stdcall? Почему не cdecl?

У меня сейчас на компе нету сишных компилеров и исходников, но вот посмотри описание любой колбэк-функции в МСДН, например:

BOOL CALLBACKEnumWindowsProc(          HWND hwnd,
   LPARAM lParam
);


Джо   (2007-04-06 15:09:00) [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 (то есть, определяет способ передачи параметров при вызове).


Ega23   (2007-04-06 14:31:00) [7]


> function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint;
>  stdcall;


Почему stdcall? Почему не cdecl?


=Guest=   (2007-04-06 14:29:00) [8]

DLLVERSIONINFOструктура а *pdvi Указатель на структуру. Джообъясните если Вам не составит труда что значит HRESULT CALLBACK


Джо   (2007-04-06 14:27:00) [9]

Блин, сорри за опечатки, двоеточие забыл.


Джо   (2007-04-06 14:26:00) [10]

function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint;

Что такое DLLVERSIONINFO — понятия не имею, тебе виднее.


Джо   (2007-04-06 14:26:00) [11]

То есть:
function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint; stdcall;


Наверх

Титульная страница Поиск, карта сайта Написать письмо