Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Объявление функции   Найти похожие ветки 

 
=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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
2-1176281435
Лёля
2007-04-11 12:50
2007.04.29
ZTable - grid


2-1175844950
Мимопроходящий
2007-04-06 11:35
2007.04.29
Кодировки


15-1175355393
Reactor
2007-03-31 19:36
2007.04.29
Доудаление касперского


2-1175949500
Tru
2007-04-07 16:38
2007.04.29
Наследование и полиморфизм


15-1175711002
Kostafey
2007-04-04 22:23
2007.04.29
Что за баг такой странный: Circular datalinks are not allowed.