Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2013, 23:39   #1
ombre_11
 
Регистрация: 29.10.2013
Сообщений: 3
По умолчанию Цикл

Код Delphi
Код:
 randomize;
   num:=random(30);
   inc(num);
   i:=1;
   repeat
   begin
    label1.Caption:= Q+floattostr( num);
    label2.Caption:= test[num-1].que;
    label3.Caption:=inttostr(i);
    RadioGroup1.Items.Strings[0]:= '1) '+test[num-1].v1;
    RadioGroup1.Items.Strings[1]:= '2) '+test[num-1].v2;
    RadioGroup1.Items.Strings[2]:= '3) '+test[num-1].v3;
    RadioGroup1.Items.Strings[3]:= '4) '+test[num-1].v4;
    zero;
    ri:= test[num-1].r;
   end;
   i:=i+1;
   until not i<>25;
при запуске переменная i не изменяется а цикл бесконечный. В чем ошибка?



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.10.2013 в 00:06.
ombre_11 вне форума Ответить с цитированием
Старый 29.10.2013, 23:53   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Очень радуют выражения такого типа, да еще не правильно записанные
Код:
until not i<>25;
Правильно записать
Код:
until not (i<>25);
Ну и совсем уж по хорошему
Код:
until i=25;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.10.2013, 23:59   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,596
По умолчанию

Я знаю более красивый способ:
Код:
until not (i < 25) and not (i > 25);
Arigato вне форума Ответить с цитированием
Старый 30.10.2013, 00:13   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, бессмысленно что-то присваивать визуальным компонентам в цикле, если Вы не даёте системе обрабатывать очередь сообщений.
если вам реально нужно видеть в label3.Caption изменения i, то нужно добавить задержку (Sleep) и/или вызвать Application.ProcessMessages;

во-вторых, с чего Вы решили, что цикл бесконечный? Проходили в отладчике пошагово?
что за неизвестная процедура zero? Вы в ней i не обнуляете часом?!

в-третьих, код у Вас очень не надёжный. в очень многих местах может банальный exception вылетать..

в-чётвертых, зачем писать until not i<>25; ?!
не проще ли записать
Код:
until i=25;
?


updated
да, с замечанием насчёт not i<>25 я явно опоздал!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.10.2013, 09:49   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Arigato
а так еще красивше
Код:
until not (not (i >= 25) or not (i <= 25));
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.10.2013, 11:39   #6
ombre_11
 
Регистрация: 29.10.2013
Сообщений: 3
По умолчанию

пробывал ставить меньшее число в условие, первые два раза цикл работает правильно, а потом начинается зацикливание
ombre_11 вне форума Ответить с цитированием
Старый 30.10.2013, 16:51   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

значит, Вы что-то делаете неправильно.


p.s. Извините, но если Вы не будете отвечать на вопросы, а сообщать только о том, что, по вашему мнению, код не работает, не думаю, что Вы далеко продвинетесь в решении своей проблемы
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать процедуры для “Цикл For ... Next ” и «Цикл Do ... Loop» по ниже приведенному условию Кристина_Патачиц Microsoft Office Excel 3 17.04.2013 17:01
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34