Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Классика
|
|||
|---|---|---|---|
|
#18+
Люди,хочу услышать ваше мнение.. Кто считает как класически должно быть for i:=0 to 2 do begin end; ShowMessage(IntToStr(i)); Что вернет. Я всегда думал теория гласит вернет 2. Проверяю в делфи - вертается 3..... Я всю жизнь заблуждался????? Есть еще такие люди???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 15:25 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
Все правильно Проверка условия - после инкремента параметра Насчет " Я всю жизнь заблуждался " - еще не всю! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 15:40 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
а ты прочти собщения компилятора на использование i после цикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 15:41 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
Есть такой баг. Но это еще ерунда. for x:=10 to 100 do begin ---- end; На первой итерации бывает = 0!!!! Было уже несколько раз при большом колве однотипных циклов. Добавлял переменную xx и переименовывал x в xx в этом месте, тогда начинало работать. Вообще бред! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 15:41 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
Posle Okonchania tsikla for peremennaia i po teorii paskalia ne vsegda vozvrashaet pravilnoe znachenia ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 15:48 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
Никакой это не баг! компилятор волен делать с твоим циклом что пожелает, в целях оптимизации. Хоть в обратном порядке выполнять... например: for x:=1 to 5 do begin ---- end; может выполняться from 5 downto 1 в случаях, когда компилятор может решить, что порядок тебе не важен. Самый простой случай - когда переменная цикла вообще не используется в его теле... просто выполняется определенное количество повторений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 15:53 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
Ни фига себе, а если у меня вычисления в цикле каком то идут, и при x=0 возникает ясень пень ошибка. Кстати оптимизатор я пробовал отключать, не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 15:59 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
"код в студию!" ну и желательно конечно с версией Delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 16:07 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
"код в студию!" это кому относится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 16:13 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
2viman: к тому, у кого "...при x=0 возникает ясень пень ошибка..." ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 16:18 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
To ?пк? а ты прочти собщения компилятора на использование i после цикла Дык по сообщению компилятора получается мне заводить вторую переменную для возврата последнего значения.... Не много ли будет переменных. Ну допустим я исправлюсь и отниму 1, но вторую переменную..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 16:18 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
кстати нашел в своем старом коде var s:string; xx:integer; begin s:=foDicEditGroups.OrgTree.Items[node_sel].text; xx:=1; for xx:=1 to node_count do begin try if foDicEditGroups.OrgTree.Items[xx].text=s then foDicEditGroups.OrgTree.Items[xx].text:=' - ' + foDicEditGroups.OrgTree.Items[xx].text; except on etreeviewerror do end; end; end; Здесь xx стоят именно по описанной выше причине. при x цикл начинался с 0. x глобальный, хх локальный пришлось заводить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 16:18 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
Весьма странный цикл. Items начинаются с 0 и заканчиваются (ItemCount-1). А цикл смещен на единицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 16:30 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
Как ни странно но нулевого значения не было. Выдавалась ошибка. компонент tTreeView. Были еще прецеденты, вопрос не в компоненте, а том какого ... цикл начинается с 0 если написано с 1 (и с 10 было даже). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 16:34 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
To YuryCh например: for x:=1 to 5 do begin ---- end; может выполняться from 5 downto 1 ------------------------------- Это откуда такие чудные данные? Имхо явный бред. This warning is issued if the value of a for loop control variable is used after the loop. You can only rely on the final value of a for loop control variable if the loop is left with a goto or exit statement. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:23 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
>Я всегда думал теория гласит вернет 2 Нет. По Вирту, значение переменной цикла после цикла неопределено, и на него нельзя полагаться. Обратим внимание - нигде в описании языка не написано, какое значение будет иметь эта переменная. Использование переменной цикла после цикла (попробовали, какое оно и "догадались") следует рассматривать как потенциально опасный трюк - разработчики компилятора вольны делать что угодно. Допустим, "догадались" - а мы уверены, что так будет во всех случаях? А в другой (следующей, предыдущей) версии компилятора? Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:29 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
To ?пк? а ты прочти собщения компилятора на использование i после цикла Дык по сообщению компилятора получается мне заводить вторую переменную для возврата последнего значения.... Не много ли будет переменных. Ну допустим я исправлюсь и отниму 1, но вторую переменную..... используй while с одной переменной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:35 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
>> for i:=0 to 2 do >> begin ------ >> end; >>ShowMessage(IntToStr(i)); Собственно, в том что "возвращается" 3 нет ничего удивительного если этот примерчик переписать вот так, то я думаю все будет понятно i:= 0 while i <= 2 do begin inc(i); end; т.е. цикл заканчивается при i=3, другое дело использование значения переменной i после окончания цикла! т.к локальные переменные располагаются в стеке и как его (этот самый стек) использует компилятор заранее не известно... И уж совсем плохо использовать глобальные переменные для счетчика цикла! Т.е. я имею ввиду, что глобальная переменная может быть изменена в каком-нибудь Event'е и тогда действительно for x:=1 to ... может начинаться с 0 !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 18:25 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
2 SiDen >>>>может выполняться from 5 downto 1 >>Это откуда такие чудные данные? >>Имхо явный бред. Из анализа дизассемблирования кода Было как-то очень длинное обсуждение этого вопроса на мастаке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 21:29 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
Достаточно немного разбираться в ассемблере, чтобы понять следующее: если в теле цикла не используется цикловая переменная, то в конечном коде ее вообще не будет - этож просто значения регистра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 07:59 |
|
||
|
Классика
|
|||
|---|---|---|---|
|
#18+
ZrenBy: Если в теле цикла переменная цикла не используется, то может быть(тогда все равно как он выполняется), но если она используется, то такого быть принципиально не должно. Какой код анализировался? Мона его провести... ЗЫ: А мужики-то не знают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 08:26 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32158866&tid=2118291]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 364ms |

| 0 / 0 |
