Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];

Вниз

Вопросик на тему вызова сишных функций из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.09 c
1-34458
NewN
2003-04-29 09:00
2003.05.12
Передача string в DLL.


7-34630
AlexRush
2003-03-10 17:09
2003.05.12
Сетевой адаптер - отправка данных в сеть


8-34518
sachem
2003-01-30 23:01
2003.05.12
менять картинки с эффектами


3-34341
I.Ru.Ru
2003-04-22 08:38
2003.05.12
Можно ли сделать экспорт из формата db в формат dbf?


14-34559
TCrash
2003-04-23 15:03
2003.05.12
ICQ ???????????





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский