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

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

Есть описание фукции на С++, как правильно описать на Delphi ? [D7, Win2k]


jiran ©   (2004-11-30 15:15:00) 

Есть описание фукции на С++
gc_Openex(LINEDEV *linedev, char *devicename, int mode, void *usrattr);
- Функция вызывается из dll, есть описание только но С++, но надо обратиться из delphi, я пытаюсь описать:
gc_Openex(LINEDEV : Pointer,devicename : array of char,mode : Integer;userattr : Pointer);
И по ходу дела это не правильно ! Помогите плизз,как правильно описать эту функцию на Delphi ?
Из С++ кода её вызывают как:
gc_Openex(&port[index].ldev, port[index].devname,1,(void *)&port[index])
Помогите плизз, а то горю !


jiran   (2004-11-30 15:58:00) [1]

По компановку:

function gc_OpenEx(var linedev : linedev;devicename : PChar; mode : Integer;var usrattr) : Integer;cdecl;external 'c:\Program Files\Dialogic\LIB\libgc.dll' name 'gc_OpenEx';

function gc_GetMetaEvent(var metaeventp) : Integer;external 'c:\Program Files\Dialogic\LIB\libgc.dll' name 'gc_GetMetaEvent';


jiran   (2004-11-30 15:56:00) [2]

Пример компилится, просто я С++ не знаю, а делать надо.
Еще у меня есть вопрос, еще одна функция в С++ описана как:
typedef struct {
long magicno;
unsigned long flags;
void *evtdatap;
long evtlen;
long evtdev;
long evttype;
LINEDEV linedev;
CRN crn;
void *extevtdatap;
void *usrattr;
int  cclibid;
int  rfu1;
} METAEVENT, *METAEVENTP;

// Функция
int gc_GetMetaEvent(METAEVENT *metaeventp);

Функция должна заполнять структуру METAEVENT.
Что я пытаюсь делать (скорее всего неправильно, плизз помогите)

type METAEVENT=record
magicno  : Longint;
flags    : Longword;
evtdatap : Pointer;
evtlen   : Longint;
evtdev   : Longint;
evttype  : Longint;
linedev  : LINEDEV;
crn      : CRN;
extevtdatap : Pointer;
usrattr  : Pointer;
cclibid  : Integer;
rfu1     : Integer;
end;
type METAEVENTP = ^METAEVENT;
// Описываю её как
function gc_GetMetaEvent(var metaeventp) : Integer;
// И пытаюсь использовать как
gc_GetMetaEvent(@metaevnt);


И структура заполнена полным бредом, образумте меня плизз.


han_malign   (2004-11-30 15:48:00) [3]

учитывая что не указан ни тип возвращаемого результата, ни компоновка(я так подозревая cdecl) - то гадать тут еще долго можно...


KSergey   (2004-11-30 15:32:00) [4]

А вы ее хоть пробовали в дельфи использовать, если честно? А то приведенный вами "для дельфи" даже не скомпилится...


KSergey   (2004-11-30 15:31:00) [5]

gc_Openex(var linedev: LINEDEV; devicename: PChar; mode : Integer; var userattr);


Наверх

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