[Ламерский вопрос] С++ <==> Delphi

capxaH

Есть старый проект на Делфи. Требуется организовать его совместимость с новым проектом на СиПиПи. Но в связи с очень плохим знанием Паскаля возникают вот такие глупые вопросы.
Как в Делфи объявить ф-цию принимающую void*. Как кастануть из void* в нужный тип.
Если это невозможно, то как обычно поступают в таких случаях.
Есть конечно вариант все конвертить в XML и передавать строку. Но как будто много лишней работы получается. Тем более что структуры примерно одинаковые используются.

dimi61

> Как в Делфи объявить ф-цию принимающую void*
pointer, если я правильно помню
> Как кастануть из void* в нужный тип
var
a : Pointer;
* * *
TType(a)
вроде бы

margadon

если всё хорошо работает, проще собрать dll на делфях, а прилинковать её в CPP-проге, а не переписывать, плодя баги

yolki

нужно ещё не забыть аккуратно применить модификаторы cdecl, pascal, stdcall и прочее..

capxaH

Согласен. Но так уж исторически сложилось что СиПиПи прога будет dll. Вроде как плагин.
P.S. Всем спасибо вроде разобрался.

kill-still


Таблица соответствия типов Delphi и С++:

Тип С++ Байтов Тип Delphi
int ?(4) integer
unsigned int ?(4) cardinal
char, __int8 1 shortint
short, __int16 2 smallint
long, __int32 (int) 4 longint (integer)
__int64 8 int64
unsigned char 1 byte
unsigned short 2 word
unsigned long 4 longword
float 4 single
double 8 double
char * PChar

Аналог сишного cast - это TClass(^Pointer).
А вообще не надо советовать плохого. Заворачивай всё в COM и не надо изобретать велосипед. В этом нет ничего сложного. Я вот 3 года назад тоже подобной фигнёй страдал (только в обратном направлении). Теперь тоже самое делается за 5 минут. Если возникнут вопросы - обращайся.

elenangel

не
TClass(^Pointer)
, а
TClass(Pointer^)  
Оставить комментарий
Имя или ник:
Комментарий: