Тема: Как использовать знания по VB в Delphi?

Здорово братва!
я немного програмирую в VB но сейчас купил Delphi  увидел его преимущества и решил использовать знания по VB в Delphi .
но ничего не получилось
решил обраться к Вам за помощью
пожалуйста покажите на при мере как это сделать
например у меня есть програамма для определения координать полилинии и записи в тхт файл.
мне нужно просто из autocadа вызвать ехе файл Delphi (нашей программы) и потом появляется форма на которой кнопка выбери полилинию которая будет обрабатывать функцию VB getentity я потом autocad становиться активным я выделяю объект потом enter и появляется сообщение что это полилиния и все
потом я как то разберусь
самое главное как использовать команды VB вDelphi
например В VB команды LisP используется Send command
есть ли такогорода вещь?
заранее злагодарен
Саша

Re: Как использовать знания по VB в Delphi?

VBA

Function Get2DPolyCoordinates() As String
Dim Entity As AcadEntity
Dim Point As Variant
Dim EnPoly As AcadLWPolyline
Dim i As Integer
On Error GoTo ErLabel
'выбор объекта (если будет пустой ввод - вылетим на ErLabel)
ThisDrawing.Utility.GetEntity Entity, Point, "Укажите полилинию"
'проверка, действительно ли выбранный объект - 2D полилиния
If Entity.ObjectName = "AcDbPolyline" Then
  'своего рода приведение типа выбранного объекта к типу полилинии
  Set EnPoly = Entity
  'перебор массива координат (т.к. полилиния на плоскости, то акад не хранит координату Z, поэтому её нет в этом массиве)
  For i = 0 To UBound(EnPoly.Coordinates)
    If (i Mod 2) = 0 Then
      Get2DPolyCoordinates = Get2DPolyCoordinates + "(X:" + Str(Round(EnPoly.Coordinates(i), 2)) + ", "
    Else
      Get2DPolyCoordinates = Get2DPolyCoordinates + "Y:" + Str(Round(EnPoly.Coordinates(i), 2)) + ") "
    End If
  Next i
  Exit Function
Else
   'если выбрана не полилиния
    Get2DPolyCoordinates = "napl" 'return "Not A PolyLine"
    Exit Function
End If
ErLabel:
  Get2DPolyCoordinates = "error"
End Function

Re: Как использовать знания по VB в Delphi?

Delphi

function Get2DPolyCoordinates:string;
var IAcad:IAcadApplication;
    Entity:IDispatch;
    Point:OleVariant;
    i:integer;
    s:string;
begin
try
  //подключение к запущенному акаду
  IAcad:=GetActiveOleObject('AutoCAD.Application') as IAcadApplication;
  //выбор объекта
  IAcad.ActiveDocument.Utility.GetEntity(Entity,Point,'Укажите полилинию');
  //проверка действительно ли выбранный объект -2D полилиния (24 - константа типа 2D полилинии)
  if ((Entity as IAcadEntity).EntityType=24) then
    begin
      //перебор координат
      for i:=0 to VarArrayHighBound((Entity as IAcadLWPolyLine).Coordinates,1) do
        if i mod 2=0 then
          Result:=Result+'(X:'+VarToStr(RoundTo((Entity as IAcadLWPolyLine).Coordinates[i],-2))+', '
        else
          Result:=Result+'Y:'+VarToStr(RoundTo((Entity as IAcadLWPolyLine).Coordinates[i],-2))+') '
    end
  else
    //если выбрана не полилиния
    begin
      Result:='napl'; //return "Not A PolyLine"
      Exit;
    end;
except
  Result:='error';
end;
end;

PS: я ничего не поняд про комманды VBA.

Re: Как использовать знания по VB в Delphi?

[rus]brat spasibo
ya koeshto ponyal
ya eshyo novichok v etom
no v vb u menya est programki
gde ikh mojno postavit na primenenie dlya drugikh
i yesli ti konkretno znayesh kak vstavlat vb kod v delfi i ispolzovat v formakh to obyasni please
budu ochen blagodaren
sasha[/rus]
Предупреждение! Помещайте транслит между тагами [rus] и [/rus].
/Администратор./

Re: Как использовать знания по VB в Delphi?

> Sasha
В Delphi ты сможешь только подгружать и вызывать на исполнение определённые макросы, но вставлять код не сможешь, ибо разные средства программирования и разные языки. Я тебе привёл пример, как программу на VBA перевести на Delphi. Если знаешь VBA, то с переводом проблем не будет, так как тоже объектно-ориентированное программирование.

Re: Как использовать знания по VB в Delphi?

SPASIBO BRATAN

Re: Как использовать знания по VB в Delphi?

> Леприкон
Спасибо большое, про idispath совсем забыл, Вы меня здорово выручили. :)