Тема: Не могу исправить ошибку в программе с библиотекой 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.