[Ламерский вопрос] С++ <==> Delphi
pointer, если я правильно помню
> Как кастануть из void* в нужный тип
var
a : Pointer;
* * *
TType(a)
вроде бы
если всё хорошо работает, проще собрать dll на делфях, а прилинковать её в CPP-проге, а не переписывать, плодя баги
нужно ещё не забыть аккуратно применить модификаторы cdecl, pascal, stdcall и прочее..
P.S. Всем спасибо вроде разобрался.
Таблица соответствия типов 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 минут. Если возникнут вопросы - обращайся.
TClass(^Pointer), а
TClass(Pointer^)
Оставить комментарий
capxaH
Есть старый проект на Делфи. Требуется организовать его совместимость с новым проектом на СиПиПи. Но в связи с очень плохим знанием Паскаля возникают вот такие глупые вопросы.Как в Делфи объявить ф-цию принимающую void*. Как кастануть из void* в нужный тип.
Если это невозможно, то как обычно поступают в таких случаях.
Есть конечно вариант все конвертить в XML и передавать строку. Но как будто много лишней работы получается. Тем более что структуры примерно одинаковые используются.