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

Вниз

Вопросик на тему вызова сишных функций из dll   Найти похожие ветки 

 
Tihas ©   (2003-04-29 16:29) [0]

Ну вот например, я знаю библиотеку crtdll.dll, там
почти все стандартные сишные функции , всё бы хорошо, еслиб не одно но. Как определить сишную функцию на паскале,
то есть экспортировать если известно, что там переменное количество параметров, типа "...".
array of const,array of pointer
К примеру, sscanf(buf,format:pchar;vars:array of const);cdecl;external "crtdll.dll" name "sscanf";

не катит, что делать?
Заранее спасибо.


 
MBo ©   (2003-04-29 16:38) [1]

Нетривиально. На ассемблере в стек положить параметры в соответствии с соглашением cdecl.
а пример на Дельфи см:
http://delphibase.endimus.com/?action=viewfunc&topic=strchange&id=10162


 
jack128 ©   (2003-04-29 16:38) [2]

насколько я знаю никак. Pascal не поддерживает переменно число параметров...


 
MBo ©   (2003-04-29 16:42) [3]

>jack128
array of const, но это не совсем аналог.


 
Tihas ©   (2003-04-29 16:44) [4]

MBo об ассемблере я сразу же подумал, но всегда же хочется
попроще.
Спасибо за ответ.


 
jack128 ©   (2003-04-29 16:47) [5]

MBo © (29.04.03 16:38)
Может я чего не понял, но где в функции wvsprintf параметр "..."?

typedef char * va_list;

int
WINAPI
wvsprintfA(
LPSTR,
LPCSTR,
va_list arglist);


 
jack128 ©   (2003-04-29 16:50) [6]

MBo © (29.04.03 16:42)
Если чесно, то я думал, что это один параметр(скорее всего реализуется, как массив указателей)


 
MBo ©   (2003-04-29 17:05) [7]

>jack128
Угу, ошибся я, видимо


 
Serginio   (2003-04-29 17:09) [8]

Помоему в 7 можно вызывать функции с переменными параметрами.
Во всяком случае точно помню, что читал про это.


 
REA ©   (2003-04-29 17:17) [9]

D7
When importing a C function that takes a variable number of parameters, use the varargs directive. For example,

function printf(Format: PChar): Integer; cdecl; varargs;

The varargs directive works only with external routines and only with the cdecl calling convention.


 
Tihas ©   (2003-04-29 18:12) [10]

REA ©
Спасибо.
Всё такие есть протое решение.


 
Tihas ©   (2003-04-29 18:19) [11]

А в D6 тоже работает это просто чудо, так удобно.



Страницы: 1 вся ветка

Текущий архив: 2003.05.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
14-34605
Viktor Kushnir
2003-04-24 11:31
2003.05.12
Чем склеить ДСП?


1-34409
sashas
2003-04-30 13:07
2003.05.12
Вывод картинки.


3-34375
Jaxtor
2003-04-21 12:26
2003.05.12
Кэшированные изменения


1-34422
saty
2003-04-28 16:08
2003.05.12
файл с записями


3-34362
d_oleg
2003-04-22 16:41
2003.05.12
fib+ & BLOB