Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

Использование переменной-счетчика цикла после выхода из оного   Найти похожие ветки 

 
Kostafey ©   (2007-05-06 17:34) [0]

Все языки уж в голове перепутались.

Вот так:

for i:=0 to N do
 if SomeArray[i]=SomeConst then break;

X:=i;

писать можно ?
Или значение i после выхода из цикла будет неопределенное?
Попробовал- все работает. Или это случайно заработало?


 
ferr ©   (2007-05-06 17:35) [1]

Использовать нельзя т.к. компилятор не даёт никаких гарантий по поводу значения на выходе.


 
Sergey Masloff   (2007-05-06 17:39) [2]

использовать нельзя и это явно описано в документации. Несмотря на то что работает.

Учись писать правильно. За такой код (варнинг компилятора там по-любому) в некоторых конторах 20$ с программера снимают за каждый случай.


 
homm ©   (2007-05-06 17:39) [3]

> Или это случайно заработало?

Нет, не случайно, текушие реализации компилятора позволяют так делать фактически, но дикларировани, что переменная неопределена, щначит лучше не пользоваться. В буду щих версих все может измениться. А может и сейчас это не для всех случаев верно.


 
ferr ©   (2007-05-06 17:40) [4]

> Нет, не случайно, текушие реализации компилятора позволяют
> так делать фактически, но дикларировани, что переменная
> неопределена, щначит лучше не пользоваться. В буду щих версих
> все может измениться. А может и сейчас это не для всех случаев
> верно.

ересь.


 
Kostafey ©   (2007-05-06 17:51) [5]

> в некоторых конторах 20$ с программера снимают за каждый
> случай

Мне такое еще не скоро светит :)
В мой код уже лет...ээ... непомню сколько никто не
заглядывал (корме форума).


> Учись писать правильно. За такой код (варнинг компилятора
> там по-любому)

А вот и нет. Именно в приведенном в [0] варианте варнинга нет.
Но если вписать

for i:=0 to N do
if SomeArray[i]=SomeConst then break;
// вот сюда
X:=i;

пару операторов, то варнинг выскочит.

Значит пишем-сс так:

for i:=0 to N do
 if SomeArray[i]=SomeConst then
 begin
   Currenti:=i;
   break;
 end;

X:=Currenti;


 
{RASkov} ©   (2007-05-06 17:54) [6]

> [5] Kostafey ©   (06.05.07 17:51)
> Значит пишем-сс так:
>
> for i:=0 to N do
> if SomeArray[i]=SomeConst then
> begin
>   Currenti:=i;
>   break;
> end;
>
> X:=Currenti;

А почему бы не так?
for i:=0 to N do
if SomeArray[i]=SomeConst then
begin
  X:=i;
  break;
end;


 
homm ©   (2007-05-06 17:58) [7]

> ересь.

Что ересь? Сам то пробовал? Все работает в простейших случаях. Насчет ВСЕХ случаев я и написал, что неизвестно.


 
Kostafey ©   (2007-05-06 18:04) [8]

> А почему бы не так?

:)
Я имел в виду, что потом сохраненное значение i как-то используем


 
{RASkov} ©   (2007-05-06 18:11) [9]

> [8] Kostafey ©   (06.05.07 18:04)
>Я имел в виду, что потом сохраненное значение i как-то используем

Ну пожалуйста.... в X-е, зачем еще одна переменная Currenti
;)
А-а-а.... понял :) Пример нужно было тогда ченить типа так:
for i:=0 to N do
if SomeArray[i]=SomeConst then
begin
  Currenti:=i;
  break;
end;

ComboBox.ItemIndex:=Currenti+5;
ListBox.ItemIndex:=Currenti-5;


А то выглядит, что задействуются две временные(ненужные) переменные...
:) Вот докопался, да? Сорри. ;)


 
Kostafey ©   (2007-05-06 18:16) [10]

> А-а-а.... понял :) Пример нужно было тогда ченить типа так:

именно так!
:)



Страницы: 1 вся ветка

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
6-1164205530
B@rm@ley
2006-11-22 17:25
2007.06.03
Socket


2-1179233486
MegaVolt
2007-05-15 16:51
2007.06.03
Как вывести WordWrap Disable текст так как это сделано на Button?


15-1177685755
easy
2007-04-27 18:55
2007.06.03
PHP DM Client - клиент для форумов сайта "Мастера Delphi"


15-1177956967
Wiedzmin
2007-04-30 22:16
2007.06.03
Смена иконки стороннего приложения


2-1178913178
Dmitry_177
2007-05-11 23:52
2007.06.03
печать