Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Конвертация из С++ в Delphi


Автор: ctranik 25.2.2009, 19:20
Всем здрасте

как я понимаю тип возвращемого значения "Integer", а что такое "CV_CDECL" ???, 
и если можно перепешите под делфи.
Код

static int CV_CDECL icvUpdateGaussianBGModel( IplImage* curr_frame, 
CvGaussBGModel*  bg_model );


Тут я непонимаю что такое "CV_IMPL",и если можно перепешите под делфи.
Код

CV_IMPL CvBGStatModel*
cvCreateGaussianBGModel( IplImage* first_frame, CvGaussBGStatModelParams* parameters )




И здесь одни непонятки,правильно-ли я конвертировал из с++ в delphi
Код

sum_d2 += (d*d);//c++
sum_d2:=sum_d2+(d*d);//delphi


Это кусок из с++ файла:
Код

for( i = 1; i < bg_model_params->n_gauss; i++ )
    {
        double index = sort_key[i];
        for( j = i; j > 0 && sort_key[j-1] < index; j-- ) //sort decending order
        {
            double temp_sort_key = sort_key[j];
            sort_key[j] = sort_key[j-1];
            sort_key[j-1] = temp_sort_key;
            
            CvGaussBGValues temp_gauss_values = g_point->g_values[j];
            g_point->g_values[j] = g_point->g_values[j-1];
            g_point->g_values[j-1] = temp_gauss_values;
        }
//        sort_key[j] = index;
    }
А так я его конвертировал : 
i:=1;
while (i< bg_model_params.n_gauss) do begin
 index:= sort_key[i];
 j:= i;
 while ((j > 0)and(sort_key[j-1] < index)) do begin
  temp_sort_key:= sort_key[j];
  sort_key[j] = sort_key[j-1];
  sort_key[j-1] = temp_sort_key;
  temp_gauss_values:= g_point.g_values[j];
  g_point.g_values[j]:= g_point.g_values[j-1];
  g_point.g_values[j-1]:= temp_gauss_values;
 end;//while
 i:=i+1;
end;//while           Всё ли я правильно конвертировал ?


Заранее благодарен

Автор: Kirgston 25.2.2009, 19:38
Код

var
i,j:integer;// j не известно какого типа... если он равняется i будем думать что integer
index,temp_sort_key:real;
temp_gauss_values:CvGaussBGValues;
begin
for i:=0 to i<bg_model_params.n_gauss do
begin
index:=sort_key[i];
for j:=i to (j>0) and (sort_key[j-1]<index do
begin
temp_sort_key:=sort_key[j];
sort_key[j]:=sort_key[j-1];
 {тут вроде обьявляется переменная... но этого типа я увы не знаю...}
temp_gauss_values:=g_point.g_values[i];
g_point.g_values[j]:=g_point.g_values[j-1];
g_point.g_values[j-1]:=temp_gauss_values;
end;
sort_key[j]:=index;
end;
end;


Вроде как-то так... пардон если не так...

Перед этим код правильный.
Два первых я не знаю  smile 

Автор: Snowy 25.2.2009, 21:16
Два первых ищи в хедерах.
Это кустомные вещи, определённые где-то через #define

Автор: Alexeis 25.2.2009, 22:02
CV_CDECL по всей видимости cdecl стандартная директива определяющая метод передачи параметров в функцию и очистку стека 

CV_IMPL - похоже от слова Import, т.е. функция импортируемая из Dll. Типа делфийского external 'cvlib.dll'

Автор: Snowy 25.2.2009, 22:08
Похоже-то оно похоже.
Но лучше свериться с хедером - там точно прописано, что оно значит.
Если под это дело завели кустомные вещи, значит они там определены через IFDEF - то есть зависимы от компилятора, таргета или системы.

Автор: ctranik 26.2.2009, 15:32
Snowy, привет

что значит 
Цитата
кустомные вещи
 ?

Автор: Snowy 26.2.2009, 15:47
От слово Custom.
Не встроенные в язык, а настроенные самостоятельно - ручками.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)