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

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

Почему возникает такое предупреждение ? [D7]


Страницы:   1 2

Warining ©   (2006-10-31 02:52:00) 


for J := 0 to Length(Rec1) -1 do
 Rec1.N := j;

if j > 5 then ...

[Warning] UDicFunc.pas(347): FOR-Loop variable 'j' may be undefined after loop


Возникает после того, как пытаюсь использовать j после цикла. А в каком случае J может быть неопределенно и почему ? В чём опасность ?


Warining   (2006-10-31 03:41:00) [21]


> Германн ©   (31.10.06 03:05) [3]
> Это даже и не Warning, а в большинстве случаев Error!
> Переменная цикла существует (и то не всегда она работает
> так, как ты этого хотел) только внутри самого цикла.
> После цикла она "не определена"


Ты вроде бы более здравомыслящий.
Это именно Ворнинг, а не Еррор, а значит ничего опасного. Вот я и спрашиваю, зачем вообще тогда предупреждать ?
Кстати если поставить перед циклом j := 1;, то предупреждение останется.


Джо   (2006-10-31 03:32:00) [22]

Да и стандарт языка — весчь неумолимая...


Джо   (2006-10-31 03:30:00) [23]

Зачем магия? Ее нет. Оптимизатор заместо нее.


Warining   (2006-10-31 03:26:00) [24]


> Джо ©   (31.10.06 03:01) [1]
>
> > А в каком случае J может быть неопределенно и почему
>
> В стандарте языка Делфи значение счетчика-переменной цикла
> после выполнения цикла не определено, т.е., может быть любым.


Что значит любым ? То код на ассемблере смотрел ? Что там, чёрная магия что ли изменит значение переменной ?


> Джо ©   (31.10.06 03:02) [2]
>
> Т.е., оно вовсе не обязано быть равным последнему значению
> счетчика в цикле.


Вот она ! Магия Дельфи !


Германн   (2006-10-31 03:05:00) [25]


>
> Warining   (31.10.06 02:52)
>
>
> for J := 0 to Length(Rec1) -1 do
>  Rec1.N := j;
>
> if j > 5 then ...
>
> [Warning] UDicFunc.pas(347): FOR-Loop variable 'j' may be
> undefined after loop
>
>
> Возникает после того, как пытаюсь использовать j после цикла.
>  А в каком случае J может быть неопределенно и почему ?
> В чём опасность ?

Это даже и не Warning, а в большинстве случаев Error!
Переменная цикла существует (и то не всегда она работает так, как ты этого хотел) только внутри самого цикла.
После цикла она "не определена"


Джо   (2006-10-31 03:02:00) [26]

Т.е., оно вовсе не обязано быть равным последнему значению счетчика в цикле.


Джо   (2006-10-31 03:01:00) [27]

> А в каком случае J может быть неопределенно и почему

В стандарте языка Делфи значение счетчика-переменной цикла после выполнения цикла не определено, т.е., может быть любым.


> В чём опасность ?

Опасность есть только в том случае, если не обращать внимания на стандарт языка и использовать ее после выполнения цикла.


Страницы:   1 2

Наверх

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