Главная страница
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.013 c
6-34535
alex2003
2003-03-14 06:12
2003.05.12
Отправка SMS


8-34512
jee
2003-01-31 16:15
2003.05.12
Тоновый набор


1-34433
NightDaro
2003-04-28 00:14
2003.05.12
Проблемы с полиморфизмом с ребенком в другом Package


6-34530
ruben
2003-03-16 06:12
2003.05.12
Что лучше - Direct Play or WinSock


3-34325
Caution
2003-04-21 22:42
2003.05.12
BDE & SQL