Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];

Вниз

Прерывания цикла, попытка #2 (с кодом!)   Найти похожие ветки 

 
Tzota   (2002-06-25 17:57) [0]

ВОт такой цикл - щаз только у себя в Дельфе сваял и проверил

Это лежит в Form.OnActivate...

for i:=1 to 32765
begin
Label1.Caption:=IntToStr(i);
Label1.Refresh;
Application.ProcessMessages;
end;

Так вот, запустив эту прогу вы будете наблюдать увеличивающуюся циферку, изображённую на форме. Если посреди этого цикла попытаться форму закрыть, то ни фига не получится. Форма закроется только тогда, когда цикл дойдёт до конца.

В чём секрет? :)


 
Извращенец   (2002-06-25 18:05) [1]

в цикл вставь условие, ЕСЛИ буттон1 нажат, ТО BREAK


 
Игорь Шевченко   (2002-06-25 18:06) [2]

Секрета нет.


 
Tzota   (2002-06-25 18:08) [3]

Ребятки, да я запарился повторять... Стоит у меня такое условие, стоит... да только программа на неё *** кладёт, понимаете?

Так же как и в приведённом коде программа НЕ РЕАГИРУЕТ на закрытие формы, хотя должна бы. Должна бы, ведь так?


 
Anatoly Podgoretsky   (2002-06-25 18:26) [4]

Может у тебя и стоит условие, но в коде его не видно, также не наблюдается и выход из цикла. Зато зачем то лишний оператор Label1.Refresh;
Решение без извращений тебе привел Извращенец, к нему нечего добавить, кроме того что надо иметь доступную переменную или свойство буттон1_нажат


 
VDen   (2002-06-25 18:37) [5]

Способ абсолютно варварский, но работает :)
...
private
procedure onClose(var A: TMessage); message WM_CLOSE;
...

implementation
var NeedClose: boolean = false;

procedure TForm1.onClose(var A: TMessage);
begin
NeedClose:=true;
Close;
end;

procedure Some;
var i: integer;
begin
for i:=1 to 32765
begin
Label1.Caption:=IntToStr(i);
Label1.Refresh;
Application.ProcessMessages;
if NeedClose then Break; {здесь надо ставить любые проверки}
end;
end;





 
VDen   (2002-06-25 18:37) [6]

Способ абсолютно варварский, но работает :)
...
private
procedure onClose(var A: TMessage); message WM_CLOSE;
...

implementation
var NeedClose: boolean = false;

procedure TForm1.onClose(var A: TMessage);
begin
NeedClose:=true;
Close;
end;

procedure Some;
var i: integer;
begin
for i:=1 to 32765 do
begin
Label1.Caption:=IntToStr(i);
Label1.Refresh;
Application.ProcessMessages;
if NeedClose then Break; {здесь надо ставить любые проверки}
end;
end;





 
VDen   (2002-06-25 18:39) [7]

В ваших глазах не двоится - это просто косяк...


 
Malder   (2002-06-25 18:46) [8]

Нету слов.
Ребятки, да я запарился повторять... Стоит у меня такое условие, стоит... да только программа на неё *** кладёт, понимаете?
А ГДЕ ОНО У ТЕБЯ СТОИТ, ЭТО УСЛОВИЕ ?!

ВОТ ТЕБЕ КОД:

flag:boolean//где нибудь глобально объяви эту переменную
...
procedure TForm1.FormActivate(Sender: TObject);
var i:integer;
begin
flag:=false;
for i:=1 to 32765 do
begin
if flag then break;
Label1.Caption:=IntToStr(i);
Application.ProcessMessages;
end;

end;


И не забудь в ONCLOSEQUERY НАПИСАТЬ:

flag:=true;

блин


 
Malder   (2002-06-25 18:51) [9]

VDen, нда...


 
VDen   (2002-06-25 19:01) [10]

Советовать людям не мое призвание...


 
Tzota   (2002-06-25 19:14) [11]

Тьфу, млять, заработало.
По мотивам вашим сообщений :)
Всем большое спасибо :)

ЗЫ А ничего флейм получился, да? :)


 
Malder   (2002-06-25 20:10) [12]

Tzota, еше бы. Ответ на твой вопрос был дан в первом же сообшении. А ты бы хоть не поленился и проверил бы...


 
nimble   (2002-06-26 09:38) [13]

А можно было просто в поток запихнуть :))



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

Форум: "Основная";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
1-23559
Дельфенер
2002-06-25 16:21
2002.07.08
Вопросик


3-23476
Wassily
2002-06-15 20:26
2002.07.08
Как создать базу данных?


4-23845
fort
2002-04-16 06:14
2002.07.08
UTF-8


14-23742
Malder
2002-06-03 17:35
2002.07.08
Сайты со всякими странностями


3-23493
dim-
2002-06-05 23:02
2002.07.08
Из поля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский