Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

почему нет STEP в цикле FOR??? [D7, WinXP]


Страницы:   1 2

cvg ©   (2004-07-09 11:24:00) 

Еще вопрос от чайника: на строчку

for i := 12 to 120 step 8 do

компилятор говорит:

'DO' expected but indentifier 'step' found

А как же тогда задать шаг инекремента i?


Тимохов   (2004-07-09 19:05:00) [1]

если не ошибаюсь inc - это compiler magic, а не просто процедура.


VMcL   (2004-07-09 18:55:00) [2]

>>Ega23 ©   (09.07.04 15:20) [20]
>>TUser ©   (09.07.04 18:17) [22]

Фактически функции Inc() в скомпилированном коде нет. Будет просто что-нибудь вроде:
inc dword ptr [eax+123]
или
inc edx


VMcL   (2004-07-09 18:53:00) [3]

По поводу Inc().

AFAIR, при выключенной оптимизации Inc(X) генерит более оптимальный код, чем X:=X+1, а при включенной по-моему одинаковый - оптимальный. Можно в CPU Window проверить.


TUser   (2004-07-09 18:17:00) [4]


> Я пытался найти описание Inc, но меня "обматерили",

А зачем тебе это описание? Впрочем, его можно найти в хелпе, а исходников ф-ции тебе Борланд все равно не даст.


Anatoly Podgoretsky   (2004-07-09 15:23:00) [5]

Это не проблема, пользуйся каноническими именами.


Ega23   (2004-07-09 15:20:00) [6]

Anatoly Podgoretsky ©   (09.07.04 15:18) [19]

Я пытался найти описание Inc, но меня "обматерили", сказав
Unit SysIni was compiled with a different version of System. @RunError


Anatoly Podgoretsky   (2004-07-09 15:18:00) [7]

Как раз насчет красоты спорно, а насчет оптимальности без разницы, будет сгенерирован одинаковый код.


nejest   (2004-07-09 15:17:00) [8]

2 DimKa
Можно, но While будет короче


Ega23   (2004-07-09 15:16:00) [9]

красивее и оптимальнее написать Inc(i, 12);

Уверен? Красивее - может быть, а вот с оптимальностью - вопрос спорный.


evvcom   (2004-07-09 15:13:00) [10]

Лучше использовать [1] + поправлю [4]: i:=i+12; красивее и оптимальнее написать Inc(i, 12);


DimKa   (2004-07-09 14:43:00) [11]

А можно так :

 for j := 1 to 10 do begin
   i := j * 12;
   {операторы, работающие с i}
 end;


TUser   (2004-07-09 14:00:00) [12]

А ты запусти программу
if 'Pascal' = 'Basic' then
  showMessage('Вы можете использовать STEP в операторе FOR')
  else
  showMessage('Увы, использование STEP в операторе FOR недопустимо');

:)


Amoeba   (2004-07-09 13:50:00) [13]


> cvg   (09.07.04 13:47) [12]

Еще Васик вспомни.


cvg   (2004-07-09 13:47:00) [14]

Почему не следую? Потому что в Клиппере по жизни был STEP. И в в Перле есть for($i=2;$i<5;++$i) (сердечное спасибо корпорации Nuntacket и лично Ларри Уоллу).


Anatoly Podgoretsky   (2004-07-09 13:34:00) [15]

REA ©   (09.07.04 13:31) [9]
А в Си нет чистого цикла FOR там по сути while


Ega23   (2004-07-09 13:33:00) [16]

А зачем?


REA   (2004-07-09 13:31:00) [17]

А в Си можно:
for (i=x=2;(i!=x++)||(--x);x+=(i--))
результат очевиден?


Думкин   (2004-07-09 11:48:00) [18]

> [6] cvg   (09.07.04 11:36)

Я тебе уже в одной ветке дал совет, почему не следуешь?


Anatoly Podgoretsky   (2004-07-09 11:40:00) [19]

Потому что данным языком это не предусмотрено, цикл с шагом по сути цикл while (особый вид записи). Вирт не стал нарушать концепцию языка.


cvg   (2004-07-09 11:36:00) [20]

Да, вижу уже, что то, что я предложил, не прокатывает... мля... По-моему, у Йенсена и Вирта такая фича была?..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо