Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.16;
Скачать: CL | DM;

Вниз

аналог for each   Найти похожие ветки 

 
mariya_mezenceva ©   (2006-03-30 09:49) [0]

есть ли в delphi аналог конструкции VB
for each ... in ...
next
подскажите, пожайлуста


 
MBo ©   (2006-03-30 09:56) [1]

В последних версиях Дельфи есть


 
mariya_mezenceva ©   (2006-03-30 10:00) [2]

в 7 есть?


 
MBo ©   (2006-03-30 10:13) [3]

нет.
Да и не вижу большого смысла.


 
mariya_mezenceva ©   (2006-03-30 10:16) [4]

как тогда можно перебирать элементы множества, к которому нельзя обращаться по индексу?


 
begin...end ©   (2006-03-30 10:19) [5]

> mariya_mezenceva ©   (30.03.06 10:16) [4]

var
 MySet: set of TMyType;
 I: TMyType;
begin
 for I := Low(TMyType) to High(TMyType) do
   if I in MySet then
     ...
end


 
mariya_mezenceva ©   (2006-03-30 10:43) [6]

не подходит
я работаю через ole
выбираю коллекцию объектов
и мне нужно перебрать эти объекты


 
Плохиш ©   (2006-03-30 10:51) [7]


> mariya_mezenceva ©   (30.03.06 10:16) [4]
> как тогда можно перебирать элементы множества, к которому
> нельзя обращаться по индексу?

В делфи таких типов нет.


 
mariya_mezenceva ©   (2006-03-30 11:10) [8]

эх...
ну неужели vb в этом функциональней моего любимого delphi
эх......


 
begin...end ©   (2006-03-30 11:15) [9]

> mariya_mezenceva ©   (30.03.06 10:43) [6]

Тогда почему в [4] шла речь о множествах?


 
Сергей М. ©   (2006-03-30 11:18) [10]


> mariya_mezenceva ©   (30.03.06 10:43) [6]
> работаю через ole


олей-серверы, если  они создают какие-либо объекты-коллекции, как правило поддерживают соответствующий интерфейс для обращения к коллекциям.

Например, в Excel св-во Workbooks объекта Application как раз и возвращает ссылку на объект-коллекцию. Обращение к св-ву Worbooks.Count даст число элементов в коллекции, а обращение к св-ву Worbooks.Items[i] вернет ссылку на объект Workbook, являющийся i-ым коллекции Worbooks.

var
 Books, Book: Olevariant;
 i: Integer;
..
 for i := 1 to Books.Count do
   Book := Books.Items[i]; //получение очередного объекта из коллекции


 
mariya_mezenceva ©   (2006-03-30 11:38) [11]

просто в моем случае это erwin
там такого свойства нет


 
Сергей М. ©   (2006-03-30 11:58) [12]


> это erwin
> там такого свойства нет


Импортируй библ-ку типов erwin"а и убедись, что нечто похожее и там должно быть.


 
mariya_mezenceva ©   (2006-03-30 12:00) [13]

как импортировать?


 
Плохиш ©   (2006-03-30 12:15) [14]

http://delphimaster.net/view/3-1143617371/


 
Сергей М. ©   (2006-03-30 12:22) [15]


> как импортировать?


В главном меню Delphi выбери "Project | Import Type Library..".

Следуй инструкциями в стандартной справке по теме "type libraries, importing"


 
mariya_mezenceva ©   (2006-03-30 12:55) [16]

есть только item[index:OleVariant]
т.е. обращаться можно только указывая ссылку на объект коллекции


 
Сергей М. ©   (2006-03-30 13:03) [17]

Что, ни у одного из объектов, имеющих св-во Item, рпи этом нет св-ва Count ?!

Что-то слабо верится в это ...


 
Сергей М. ©   (2006-03-30 13:21) [18]

Впрочем, если св-во Count у объекта-коллекции, имеющего св-во Item, действительно отсутствует, наводит на мысль о "кривизне рук" разработчиков данного ПО. Но и в этом случае, думаю, можно "совершить подвиг", примерно так:

const
 SomeLowestItemIndex = 0; //иногда элементы коллекции индексируются начиная с единицы, это следует проверить (см. документацию и практ.эксперимент)

var
 CollectionIndex: Integer;
 SomeCollectionObject: OleVariant;
 SomeCollectionItemObject: OleVariant;
..

CollectionIndex := SomeLowestItemIndex;
while True do
 try
   SomeCollectionItemObject := SomeCollectionObject.Item[CollectionIndex];
   ..
   Inc(CollectionIndex);
 except
   on e: EOleSysError do Break;
 end;


 
mariya_mezenceva ©   (2006-03-30 15:08) [19]

я же написала
item[index:OleVariant]
OleVariant а не integer
поэтому у меня и возникли проблемы


 
Сергей М. ©   (2006-03-30 15:17) [20]


> mariya_mezenceva ©   (30.03.06 15:08) [19]


Тип данных OleVariant на то и есть OleVariant, что может хранить в каждый конкретный момент времени данные более чем одного базового типа - и integer, и string, и boolean ...

Не почитать ли тебе умный букварь по Делфи, прежде чем бросаться в дебри олей-программинга ?



Страницы: 1 вся ветка

Текущий архив: 2006.04.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
2-1143297744
KING
2006-03-25 17:42
2006.04.16
Нормализация БД


15-1143287847
iamdanil
2006-03-25 14:57
2006.04.16
Дневной дозор


15-1143311184
u-12
2006-03-25 21:26
2006.04.16
Какой язык лучше для моделирования?


2-1144089581
mc tarik
2006-04-03 22:39
2006.04.16
Как использовать (exe) вставленный в программу не сохраняя .....


15-1143037767
Харько
2006-03-22 17:29
2006.04.16
Задачка в среду