ksPointsOnCurve

Автор Аleksey, 20.08.04, 10:08:34

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Аleksey

Подскажите, пожалуйста, переменной какого типа присвоить значения, полученные функцией  iMath.ksPointsOnCurve(pObj, count); (возвращает массив точек (IDispatch)). Динамическому массиву не присваивается.

Alex_F

Фрагемнт кода полученный от разработчиков
проверено (правда на Buildere):
ksDynamicArray* arr = (ksDynamicArray*) pMath->ksPointsOnCurve(objcurve, 1);
if ( arr ) {
  ....
  ksMathPointParam* point = (ksMathPointParam*)kompas->GetParamStruct(
ko_MathPointParam );

Alex_F

Вы случаем не разу не создавали примитивы с пользовательским стилем?
Если есть код буду очень рад

Аleksey

ЦитироватьksDynamicArray* arr = (ksDynamicArray*) pMath->ksPointsOnCurve(objcurve, 1);
if ( arr ) {
  ....
  ksMathPointParam* point = (ksMathPointParam*)kompas->GetParamStruct(
ko_MathPointParam );
спасибо. но как я понял присвоение идет динамическому массиву,
а в делфи при этом выходит ошибка несоответствие типов
’IDispatch’ and ’ksDynamicArray’.
к сожалению по примитивам с пользовательским стилем ничем помочь не могу.

Alex_F

Можно посмотреть ваш код?

Аleksey

ЦитироватьМожно посмотреть ваш код?
var
  pointArr : ksDynamicArray;
  iPoint   : ksMathPointParam;
...
begin
  count := 5;
...
  pointArr := ksDynamicArray(iKompas.GetDynamicArray(POINT_ARR));
  if pointArr = nil then Exit;
...
        pointArr := iMath.ksPointsOnCurve(pObj, count);
// ^^^^^^^^^^^^^^^^вот, собственно тут и не работает
        iPoint := ksMathPointParam(iKompas.GetParamStruct(ko_MathPointParam));
        iPoint.Init;
        for i:=0 to count-1 do
        begin
          pointArr.ksGetArrayItem(i, iPoint);
          iDoc.ksPoint(iPoint.x, iPoint.y, 2);
...

Alex_F

мне кажется iMath вам необходимо привести к ksDynamicArray
ведь я делаю
ksDynamicArray* arr = (ksDynamicArray*) pMath->ksPointsOnCurve(objcurve, 1);

Аleksey

Цитироватьмне кажется iMath вам необходимо привести к ksDynamicArray
вот это то и не знаю как сделать, ч/з указатели тоже пробовал:
type
  pArr = ^ksDynamicArray;
var
  pointArr : ksDynamicArray;
  pDynArr  : pArr;
  ptr      : Pointer;
...
begin
...
ptr := @(iMath.ksPointsOnCurve(pObj, count)); //ошибка - Variable requared
pDynArr := pArr(ptr);
pointArr := pDynArr^;
...
не хочет:(
первый проект в этой области, опыта нет, много вопросов:)
а проблема то в том, что необходимо разбивать кривые на N равных частей, может есть другой способ?

333

Вместо
pointArr := ksDynamicArray(iKompas.GetDynamicArray(POINT_ARR));
if pointArr = nil then Exit;
...
pointArr := iMath.ksPointsOnCurve(pObj, count);

нужно написать:
pointArr := ksDynamicArray(iMath.ksPointsOnCurve(pObj, count) );