Главная страница
    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.036 c
3-23473
Ivan_A
2002-06-13 23:43
2002.07.08
Где найти InstallShield


4-23824
Artemkin
2002-05-08 07:21
2002.07.08
TTreeview


14-23749
veselov
2002-06-06 15:23
2002.07.08
Надо кредит бокс !!


3-23442
фл
2002-06-14 11:28
2002.07.08
local SQL запрос: выбрать 5 максимальных


14-23734
lak_b
2002-06-06 00:26
2002.07.08
Interbase





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский