IArray & IUnknown

0 голосов
спросил 15 Ноя, 04 от Гость (210,080 баллов) в категории Программные продукты Esri

Уважаемые!

Необходимо сформировать массив с использованием класса

IArray. Из help для метода Add

Adds an object to the array.

Syntax

object.Add (unk )

The Add method syntax has the following object qualifier and arguments:

Part Description
object An object expression that evaluates to an object in the Applies To list.
unk Required. An IUnknown Pointer.
 

Проблемы нет с использованием в качестве элементов массива  данных  типа указатель на Point.

Dim pMyArray As esriCore.IArray
Dim My_Ind As esriCore.IPoint
Set pMyArray = New esriCore.Array

Set My_Ind = New esriCore.Point
My_Ind.PutCoords X1, Y1

pMyArray.add My_Ind

Проблема:

Элементы массива должны иметь тип указатель на  Long(Variant).

Каким образом можно получить этот указатель?

Первый шаг вероятно

Dim My_Ind As esriCore.IUnknown
А что дальше?

Спасибо за помощь.image

3 Ответы

0 голосов
ответил 15 Ноя, 04 от Tatkis (2,420 баллов)

попробуйте завести массив типа ILongArray или IVariantArray

может быть поможет? image

0 голосов
ответил 16 Ноя, 04 от Гость (210,080 баллов)

Уважаемый Tatkis. Я Вас наверное не совсем достаточно понял, но ArcObjects не имеет таких массивов в качестве интерфейса, есть только IArray

IArray Interface

Online

Provides access to members that control a simple array of objects.

Members
< id=2 =getsel5(2) name=2 VALUE="2"> AllPropertiesMethods</> Description
Method Add Adds an object to the array.
Read-only property Count The element count of the array.
Read-only property Element Searches for the object in the array.
Method Insert Adds an object to the array at the specified index.
Method Remove Removes an object from the array.
Method RemoveAll Removes all objects from the array.

CoClasses that implement IArray
CoClasses and Classes Description
Array Generic array of objects.

< id=hhpopup =application/x-ole height=0 width=0 classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11>

</>и соответственно:

для добавления элемента в массив

Add Method

< id=alink_3 style="LEFT: 10px; WIDTH: 66px; TOP: 50px; HEIGHT: 16px" =application/x-ole height=16 width=66 classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11>

</>    Online

Adds an object to the array.

Syntax

object.Add (unk )

The Add method syntax has the following object qualifier and arguments:

Part Description
object An object expression that evaluates to an object in the Applies To list.
unk

Required. An IUnknown Pointer.

Мой вопрос был относительно возможности создания указателя на переменную типа long. Для C++ это *long.

С уважением ,

jas

< id=hhpopup =application/x-ole height=0 width=0 classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11></>
0 голосов
ответил 22 Ноя, 04 от Andranic (2,620 баллов)

Dim pPointer As Variant

Dim pArcObjectObj as IYourArcObjectInterface

Set pArcObjectObj = New YourArcObjectClass

Set pPointer = pArcObjectObj

Dim pMyArray As esriCore.IArray

pMyArray.Add pPointer

Вместо IYourArcObjectInterface - подставляете соответственно интерфейс, вместо YourArcObjectClass - класс ArcObject.

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...