Перейти к публикации

Использование процедур


Beg!ner

Рекомендованные сообщения

Привет всем! :wallbash: Помогите найти правильный ответ.. Я использую процедуру из SW API в Delphi -- retval = Curve.GetEndParams ( &start, &end, &isClosed, &isPeriodic ) все казалось бы просто, однако при ее вызове выдается ошибка “Несоответствие типов”. Следует сказать, что наверное, это единственная процедура в SW которая имеет только выходные параметры…. Типы выходных параметров я задаю в соответствии требованиям их описания по документации.., те. описываю 4ре переменных соответствующих типов вот..:

Output: (double) start Start parameter value

Output: (double) end End parameter value

Output: (BOOL) isClosed TRUE for closed curves, FALSE for other types

Output: (BOOL) isPeriodic TRUE for periodic curves, FALSE for other types

Return: (BOOL) retval TRUE if the operation was successful, FALSE if not

…даже пробовал описать их все Variant.. не помогло.. подумал, мож указатель на Curve с которой я работаю не корректен.. Проверил , вызвал GetLength2 ,например, все пучком длину возвращает… получается, проблема с вызовом только этой процедуры …

Кстати, в заголовке этой процедуры имеются “Загадочные” символы &, описания использования которых в документации SW я не нашел…(в VB это по ходу конкатенация строк или неявное определение типа переменной Long)….. мож в них то и проблема? :wink::wallbash::blink:

Кто использовал данную процедуру в Delphi или знает о символах & пожалуйста помогите. Спасибо.

Ссылка на сообщение
Поделиться на других сайтах


здрям

Curve.GetEndParams ( &start, &end, &isClosed, &isPeriodic )

если посмотрите на реальное объявление функции, то оно выглядит так:

virtual HRESULT __stdcall GetEndParams (

        double * start,

        double * end,

        VARIANT_BOOL * isClosed,

        VARIANT_BOOL * isPeriodic,

        VARIANT_BOOL * retval ) = 0;

Дальше я думаю сами догадаетесь.

зы: & - операция получения адреса переменной в С\С++

Ссылка на сообщение
Поделиться на других сайтах

Спасибо...но как же быть с тем что любая переменная фактичеки нявно есть именнованной областью памяти хранящей

Ссылка на сообщение
Поделиться на других сайтах

...некое значение..тобиш фактически объявляя любую переменную пользователь неявно задает указатель на область памяти требуемого объема..

Видимо в данном случае нужно ЯВНО задавать все параметры как указатели на память с помощью ^.. Кстати про & --- в SW API сперва дается описание процедуры для Delphi-подобных языков,, а потом уже для С... я смотрел в

1-е описание..... но что в нем делает Сишная описание оcтается загадкой )

Ссылка на сообщение
Поделиться на других сайтах

Однако, даже если я определю эту процедуру как:

Curve.GetEndParams(@start,@end,@closed,@periodic);

или определю соответственно 4ре переменные :

start: ^double;

end: ^double;

closed:^boolean;

periodic:^boolean;

и подставлю в параметры процедуры ... работать не будет .. т.к.

"Type not allowed in Variant Dispatch call" и все тут.. ((

Ссылка на сообщение
Поделиться на других сайтах

здрям

"Type not allowed in Variant Dispatch call" и все тут.. ((

похоже Delphi тоже оборачивает данный вызов - посмотрите ваш файл sldworks.tlb одним из средств просмотра COM-библиотек или заголовок, который делает Delphi

но что в нем делает Сишная описание оcтается загадкой )

глюк хелпа
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...