![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
аналог for each
mariya_mezenceva © (2006-03-30 09:49:00)есть ли в delphi аналог конструкции VB
for each ... in ...
next
подскажите, пожайлуста
Сергей М. (2006-03-30 15:17:00) [1]
> mariya_mezenceva © (30.03.06 15:08) [19]
Тип данных OleVariant на то и есть OleVariant, что может хранить в каждый конкретный момент времени данные более чем одного базового типа - и integer, и string, и boolean ...
Не почитать ли тебе умный букварь по Делфи, прежде чем бросаться в дебри олей-программинга ?
mariya_mezenceva (2006-03-30 15:08:00) [2]я же написала
item[index:OleVariant]
OleVariant а не integer
поэтому у меня и возникли проблемы
Сергей М. (2006-03-30 13:21:00) [3]Впрочем, если св-во 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;
Сергей М. (2006-03-30 13:03:00) [4]Что, ни у одного из объектов, имеющих св-во Item, рпи этом нет св-ва Count ?!
Что-то слабо верится в это ...
mariya_mezenceva (2006-03-30 12:55:00) [5]есть только item[index:OleVariant]
т.е. обращаться можно только указывая ссылку на объект коллекции
Сергей М. (2006-03-30 12:22:00) [6]
> как импортировать?
В главном меню Delphi выбери "Project | Import Type Library..".
Следуй инструкциями в стандартной справке по теме "type libraries, importing"
Плохиш (2006-03-30 12:15:00) [7]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1143617371&n=1
mariya_mezenceva (2006-03-30 12:00:00) [8]как импортировать?
Сергей М. (2006-03-30 11:58:00) [9]
> это erwin
> там такого свойства нет
Импортируй библ-ку типов erwin'а и убедись, что нечто похожее и там должно быть.
mariya_mezenceva (2006-03-30 11:38:00) [10]просто в моем случае это erwin
там такого свойства нет
Сергей М. (2006-03-30 11:18:00) [11]
> 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]; //получение очередного объекта из коллекции
begin...end (2006-03-30 11:15:00) [12]> mariya_mezenceva © (30.03.06 10:43) [6]
Тогда почему в [4] шла речь о множествах ?
mariya_mezenceva (2006-03-30 11:10:00) [13]эх...
ну неужели vb в этом функциональней моего любимого delphi
эх......
Плохиш (2006-03-30 10:51:00) [14]
> mariya_mezenceva © (30.03.06 10:16) [4]
> как тогда можно перебирать элементы множества, к которому
> нельзя обращаться по индексу?
В делфи таких типов нет.
mariya_mezenceva (2006-03-30 10:43:00) [15]не подходит
я работаю через ole
выбираю коллекцию объектов
и мне нужно перебрать эти объекты
begin...end (2006-03-30 10:19:00) [16]> 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:16:00) [17]как тогда можно перебирать элементы множества, к которому нельзя обращаться по индексу?
MBo (2006-03-30 10:13:00) [18]нет.
Да и не вижу большого смысла.
mariya_mezenceva (2006-03-30 10:00:00) [19]в 7 есть?
MBo (2006-03-30 09:56:00) [20]В последних версиях Дельфи есть