Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.09.15;
Скачать: CL | DM;

Вниз

Проблема с функцией Delphi -> C++   Найти похожие ветки 

 
Sammi   (2013-03-27 17:34) [0]

Есть функция:
Function  TextOut(Font:integer; x,y:integer; r,g,b,a:single; Text:PChar):TVector2i; cdecl;
begin
 Result:=TextOut(Font,x,y,Text,Vector4f(r,g,b,a));
end;

TVector2i = record
 x,y:integer;
end;


Пытаюсь использовать ее на С++:
typedef vec2i (__cdecl *PTEXTOUTPROC) (int Font, int x, int y, float r, float g, float b, float a, const char* Text);

struct vec2i{
int x;
int y;
};


При попытке записи в Result ловлю исключение.

Если сделать так:
struct vec2i{
int x;
int y,t;
};
то все ок.
Не пойму, где косячу.


 
icWasya ©   (2013-03-27 17:41) [1]

Ну для начала посмотреть, какого на самом деле размера структуры - на C и в Delphi.


 
Sammi   (2013-03-27 17:42) [2]

Обе 8 байт. Первым делом проверил.


 
Григорьев Антон ©   (2013-03-28 12:29) [3]

Надо смотреть спецификацию, как функция возвращает параметры типа структур. В Delphi такая функция трактуется как процедура с дополнительным параметром-переменной, а при вызове компилятор подставляет туда в качестве параметра либо подходящую переменную, либо создаёт неявную переменную специально для такого вызова. Не знаю, как это реализовано в C++, но почему-то мне кажется, что как-то по-другому должно быть. Надо копать в этом направлении.


 
SergeyIT ©   (2013-03-29 13:58) [4]

А что это за функция вызывается?
Result:=TextOut(Font,x,y,Text,Vector4f(r,g,b,a));


 
Sammi   (2013-04-08 14:01) [5]

Собственно функция, которая выводит текст.
Если вас одинаковое название смущает, то не обращайте внимание. Оно в реале разное. У внешних функций префиксы. Убрал их чтобы не засорять код.


 
DevilDevil ©   (2013-04-08 20:51) [6]

> Sammi   (27.03.13 17:34) 

есть возможность посмотреть дизасм вызова со стороны С++ ?



Страницы: 1 вся ветка

Текущий архив: 2013.09.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
2-1357291115
Pcrepair
2013-01-04 13:18
2013.09.15
Проблемы с передачей параметров в поток через TStringList


15-1365005875
О-Сознание
2013-04-03 20:17
2013.09.15
Надёжность GetWindowLong(H, GWL_USERDATA)


15-1365336685
Разведка
2013-04-07 16:11
2013.09.15
как создать сгенерировать UUID


2-1357313213
jjiurafds
2013-01-04 19:26
2013.09.15
Можно ли такое сделать в SQL или нет???


6-1268966156
RGV
2010-03-19 05:35
2013.09.15
Socks5, аутентификация