Тема: OleVariant взамен AutoCAD_TLB

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

Проблема в следующем.

Функция GetPoint, первым параметром в примерах берет в переменную Point  значение типа EmptyParam, и программа работает, пока подключен TLB, но как только перевожу все на OleVariant, функция возвращает ошибочно переданный параметр Point, и заставить работать можно только передав туда координаты точки, но тогда появляется линия в чертеже, относительно которой мы ставим точку.
Как не передавать некакие координаты, и чтобы ошибки не вылезали?

Re: OleVariant взамен AutoCAD_TLB

Юзай Variant:

function TAcad.GetInsertionPoint: TcPoint;
var
  p1: Variant;
begin
  p1 := VarArrayCreate([0, 2], varDouble);
  p1 := ACad.Doc.Utility.GetPoint(, 'Укажите точку вставки:');
....
end;

Re: OleVariant взамен AutoCAD_TLB

Ты не понял, там где ты написал .GetPoint(, 'Укажите точку вставки:'); проблема.
Первую переменную ты пропускаешь, а я нет. Сейчас попробовал без нее - заработало. Но припоминаю, что раньше у меня компилятор ругался на ее отсутствие... хм.

GetPoint(EmptyParam, 'Укажите точку вставки:') - работает ток когда библиотека автокада подключена, хотя EmptyParam, не в ней обьявлен. А без библиотеки, с ним низя..