![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: нет Всего: 18 |
Есть ли в Delphi какая-то переменная, которую можно использовать вместо счётчика цикла?
В таких случаях можно было бы и не писать var. Может в VCL завалялась какая-то переменная, которую можно использовать для данных целей? |
|||
|
||||
| kami |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
нельзя. ObjectPascal, как и Delphi - строгие языки, объявлять переменные нужно обязательно, причем тип играет огромное значение. К примеру, следующий цикл будет выполнен великое множество раз, если List.Count=0.
Не вижу смысла. Уменьшения размера программы таким образом добиться не получится. Даже если и удатся что-то найти в VCL, то это будет глобальная переменная, которая после выхода из цикла окажется в неопределенном состоянии. И кто даст гарантию, что какой-нибудь метод из VCL не захочет случайно спросить, какое же значение было раньше в этой переменной? Последствия - непредсказуемы. |
||||
|
|||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
даже если бы где-то в другом модуле и была ненужная переменная, использовать ее не получилось бы. Счетчик цикла должен быть объявлен там же, где и цикл
-------------------- Обижено школьников: 8 |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Это сообщение отредактировал(а) Данкинг - 17.3.2009, 23:40 -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 4 Всего: 17 |
Да ну! Ну а если эта переменная глобальная, объявлена в модуле главной формы (программы)? А из VCL нет. Это сообщение отредактировал(а) former - 18.3.2009, 00:14 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Ну да. bems прав. Delphi по этому поводу говорит, что for loop-control variable must be a simple local variable. А речь идет именно о переменных, объявленных в других модулях (если конкретнее - в исходниках VCL), которые планируется задействовать в своем коде в качестве счетчиков цикла. |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 4 Всего: 17 |
это точно. пробовал с Tag. Ругается. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: нет Всего: 18 |
В С – подобных языках это и не требуется, так как переменная объявляется прямо на месте |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Но всё равно же объявление переменной присутствует, пусть и не такое, как в Дельфи ( for (i = 0;.....). -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 7 Всего: 50 |
В 2009 появилась конструкция for in
|
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
||||
|
||||
| Gwire |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: 1 Всего: 4 |
Да и в зависимости от того какую цель приследовать.
Но стоит ли так "ПАРИТЬ" себе голову? По моему этот вид лучше и проще:
|
||||||
|
|||||||
| Beltar |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 0 Всего: 7 |
В Аде ЕМНИП переменная цикла автоматом становится Integer.
Если уж заговорили об экономии двух-трех символов, то позволю себе небольшой оффтопик. В Си цикл for, я за таковой вообще не считаю. Т. к. for(i=0;i<n;i++) совершенно аналогично
В обоих случаях описано ровно 3 операции. Укажите хоть одно отличие от while? На кой фиг это дебильное i++ вообще нужно, если цикл for в 99,9% случаев имеет инкремент 1? Это сообщение отредактировал(а) Beltar - 20.3.2009, 12:33 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||
|
|||||||
| Dmi3ev |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: нет Всего: 41 |
С++ с Delphi сравнивать?
1) переменная локальная, вне цикла ее нет, это довольно удобно, даже не собираюсь объяснять чем... 2) начальное значение, условие цикла, а также шаг (все параметры цикла) находятся на одной строке (удобочитабельно) 3) при этом есть возможность запускать цикл вот такого плана
что с while уже будет выглядеть более запутано на мой взгляд...
а на кой фиг Inc(i); ? (не нравится сделай свою функцию Inc() или пиши i=i+1, кто не дает) а если серьезно то "++" много возможностей и это удобная штука, а если не умеешь ей пользоваться, то это не значит, что она "дебильная"... 4)
у кого как...
а это чем тебе не цикл? На самом деле Delphi и С++ сравнивать - глупое занятие, поэтому продолжать не буду... Это сообщение отредактировал(а) Dmi3ev - 22.3.2009, 14:48 -------------------- |
||||||||||||||
|
|||||||||||||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |