Тема: Не могу исправить ошибку в программе с библиотекой ACAD_TLB_2007!!! HELP!!!

Добрый день.
Я не профессиональный программист, так, любитель.
Давным давно с помощью подруги программиста я написала программу по расчету длины между n-м количеством точек. Написана она была еще для 2000 автокада. Но как только вышел 2002 она перестала в нем работать. Подруга сказала импортирую новую бибилиотеку и просто с ней перекомпилируй. Я так и сделала. Просто перекомпилировала и все работало до 2007 автокада. В 2007 она опять перестала работать. Я не долго думая провела выще указанную манипуляцию....но!!!!
Кусочек старой программы:
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, AutoCAD_2002_TLB, ComObj;
  procedure Link;
type
  TForm1 = class(TForm)
    Button1: TButton;
    StaticText1: TStaticText;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  dist, obsh, dlina: double;
  mas, pot: real;
  Acad: IAcadApplication;
  AcDoc: IAcadDocument;
  AcUtil: IAcadUtility;
  i: integer;
  pts: array of OleVariant;
  next: boolean;
  l: IAcadLine;
implementation....
procedure Link;
begin
try
  Acad := GetActiveOleObject('Acad.Application')as IAcadApplication;
  AcDoc := Acad.ActiveDocument;
  AcUtil := AcDoc.Utility;
except
  ShowMessage('       AutoCAD не запущен'+#13+
           'или идет выполнение программы!!!');
  exit;end; //try...except
try
  SetLength(pts, 1);
  pts[0] := AcDoc.Utility.GetPoint(EmptyParam, 'Укажите первую точку:');
except....
Я импортировала новую библиотеку, назвала ее как захотела и поменяла в uses AutoCAD_2002_TLB на AutoCAD_2007_TLB.
Во-первых Delphi попросил определить переменную EmptyParam, хотя с библиотекой 2002-2006 автокада он такого не требовал.
Ладно, хотит сделаем....я определила эту переменную как и прописан ее тип: EmptyParam: OleVariant;
Тогда он перекомпилировал ее без ошибок но!!!!, программа отказалась работать в автокаде и выдавала ошибку (не хотела считывать точку)!!!
Я провела пошаговую компиляцию и обнаружила что на строке:
pts[0] := AcDoc.Utility.GetPoint(EmptyParam, 'Укажите первую точку:'); он выдает ошибку типа что тип данных не правильно определен и на этом все сворачивал!!!! Я не профессиональный программист, помогите!!!
Почему происходит данная ошибка, а также почему он вдруг попросил определить EmptyParam.

Re: Не могу исправить ошибку в программе с библиотекой ACAD_TLB_2007!!! HELP!!!

Никогда не импортируйте библиотеку типов!  Библиотеки меняются от версии к версии, и в них имеются ошибки. Формируют TLB люди, а люди ошибаются.
Работайте с поздним связыванием, безо всяких компонентов на форме. И не будете иметь таких проблем. Но будут другие, однако разрешаемые.
Что касается аргументов, то открывайте acadauto.chm и внимательно изучайте соответствующие объекты, их свойства и методы.
Для метода GetPoint первый аргумент - опциональная базовая точка, а не "EmptyParam". То есть назвать-то переменную можно как угодно, но передавать нужно то, что по смыслу.
EmptyParam определена в Variants. Ее не надо самостоятельно объявлять. Надо не только объявить, но и присвоить значение. Включите Variants в uses. Попробуйте подставить nil.

Re: Не могу исправить ошибку в программе с библиотекой ACAD_TLB_2007!!! HELP!!!

ShaggyDoc пишет:

Никогда не импортируйте библиотеку типов...

С этим можно поспорить. :)
Кто как приучается работать - так и продолжает... это исключительно дело ВКУСА !  :)
Я, например, работаю исключительно с "чистыми" описаниями интерфейсов (который генерит Delphi из библиотеки типов). По крайней мере уже на этапе компилляции доступны ошибки...
У меня в проекте пользуется акад 2002, 2006 ... были бы другие версии - добавил бы поддержку и для других.
Ну это так - лирика. :)
Что касается кода можно написать так:

var
  ...
  Point : OleVariant;
  pts : OleVariant;
begin
  ...
  Point := VarArrayCreate([0,2], varDouble);
  pts := AcDoc.Utility.GetPoint(Point, 'Укажите первую точку:');
  ...
end;

Проверить работоспособность не могу по причине отсутствия 2007-го акада :)

Re: Не могу исправить ошибку в программе с библиотекой ACAD_TLB_2007!!! HELP!!!

Delphi выдает ошибку на VarArrayCreate - он говорит что не может определить идентифкатор...

Re: Не могу исправить ошибку в программе с библиотекой ACAD_TLB_2007!!! HELP!!!

> callisto
Если не трудно расскажи как добавил поддержку нескольких автокадов?