Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Вниз

аналог 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.041 c
2-1143801734
alex_pv2
2006-03-31 14:42
2006.04.16
Подсчет символов в текстовом файле


15-1143419024
Ketmar
2006-03-27 04:23
2006.04.16
Guano Apes -- Break The Line -- clip


6-1129731733
Максим
2005-10-19 18:22
2006.04.16
MAC адрес


3-1140548087
Варяг
2006-02-21 21:54
2006.04.16
Упаковка ADOTable


15-1143524367
Ega23
2006-03-28 09:39
2006.04.16
С Днём рождения! 28 марта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский