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

Вниз

Прервание выполнения процедуры до нажатия кнопки   Найти похожие ветки 

 
JOnyto   (2004-10-28 20:03) [0]

Подскажите уважаемые мастера, как прервать выполнение процедуры до нажатия кнопки?????А потом продолжить. Плиз!!!!!!!!!!!!


 
JOnyto   (2004-10-28 20:09) [1]

Удалено модератором


 
Symb   (2004-10-28 20:10) [2]

Какой процедуры? Какой кнопки?


 
begin...end ©   (2004-10-28 20:11) [3]


> JOnyto   (28.10.04 20:03)


> как прервать выполнение процедуры до нажатия кнопки

А до нажатия кнопки она работала? И как запускалась?


 
JOnyto   (2004-10-28 20:15) [4]

любая процедура, например сортирует массив которая. Кнопка - button


 
JOnyto   (2004-10-28 20:16) [5]

До начала работала. Запускалась тоже при нажатии на кнопку


 
begin...end ©   (2004-10-28 20:17) [6]

И что там в процедуре? Цикл?


 
JOnyto   (2004-10-28 20:19) [7]

Я думаю это должно быть очень просто, но как?


 
JOnyto   (2004-10-28 20:19) [8]

Да в процедуре есть цикл


 
JOnyto   (2004-10-28 20:22) [9]

Уважаемый begin ...end если знаете подскажите. Очень Очень нужно


 
Symb   (2004-10-28 20:24) [10]

Если ее нужно прервать на обработку каких-то других событий (отрисовка или нажатие другой кнопки), напиши в цикле Application.ProcessMessages. Это приведет к обработке того, что сейчас стоит в очереди (к примеру вызова обработчика нажатия мыши, если пользователь куда-то кликнул).


 
JOnyto   (2004-10-28 20:26) [11]

Мне нужно чтобы выполнение процедуры приостановилось а затем по нажатию какойто другой кнопки она продолжилась


 
begin...end ©   (2004-10-28 20:27) [12]

Могу только сказать, как прервать по нажатию кнопки.


 
PVOzerski ©   (2004-10-28 20:28) [13]

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

procedure TForm1.Button1Click(Sender: TObject);
begin
 label1.Caption:="0";
 repeat
  Application.ProcessMessages;
  if Tag=0 then
   continue;
  label1.Caption:=IntTostr(StrToInt(label1.Caption)+1);
 until false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Tag:=1;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 Tag:=0;
end;


 
JOnyto   (2004-10-28 20:31) [14]

Большое спасибо PVOzerski уверен что заработает. А есть у кого еще какие варианты. Так на всякий случай???


 
Symb   (2004-10-28 20:32) [15]

Заведи глобальные переменные, в которых будешь хранить все, что необходимо для расчетов в процедуре.
1. По нажатию кнопки 1 инициализируй их и запускай процедуру;
2. По нажатию кнопки 2 (чтобы она нажалась, ProcessMessages) выставляй какую-то переменную в True);
3. Проверяй в цикле процедуры эту переменную. Если True, завершай ее.
4. По нажатию кнопки 3 запускай процедуру без инициализации, чтобы она продолжала цикл с оставшимися в прошлый раз значениями глобальных переменных.


 
debuger ©   (2004-10-28 20:33) [16]

Выполняешь процедуру посредством API CreateThread( SuspendThread, ResumeThread ) или класса TThread(Create,Suspend,Resume,Execute); не забудь почитать хэлп по TThread.Synchronize();

Удачи.


 
JOnyto   (2004-10-28 20:34) [17]

PVOzerski Да а для чего сдесь 3 кнопки.
Мне же нужно чтобы выполнение процедуры приостановилось ожидая нажатия какойто кнопки


 
begin...end ©   (2004-10-28 20:38) [18]


> [17] JOnyto   (28.10.04 20:34)

Сути дела это не меняет. Можно так:

procedure TForm1.Button2Click(Sender: TObject);
begin
if Tag = 0 then Tag := 1 else Tag := 0
end;


 
JOnyto   (2004-10-28 20:41) [19]

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


 
begin...end ©   (2004-10-28 20:42) [20]


> [19] JOnyto   (28.10.04 20:41)


> Мастера хочу вам раскрыться мне нужно написать курсовой.

А на первый взгляд был такой хороший мальчик... ;-)


 
JOnyto   (2004-10-28 20:44) [21]

begin...end ©   помогите если можите а то застрелюсь


 
PVOzerski ©   (2004-10-28 20:56) [22]

Дело же не в том, ЧТО надо написать, дело же еще и в том, что ты ждешь полного решения. Я вот привел примерчик - так сразу "а зачем кнопки". Да вот просто для наглядности, да и написать было проще. А идею-то примера понять и творчески употребить в голову не приходит? BTW, для изложенной далее проблемы есть еще более простое решение: периодически формировать строку со значениями переменных и выводить ее в выскакивающем модальном окошке. Но, извини, писать за тебя курсовик здесь будут вряд ли.


 
debuger ©   (2004-10-28 20:59) [23]

[19] Шас я застрелюсь :)
В поставке Делфи 5(100%) в остальных не уверен.
%DELPHIFOLDER%\DEMOS\THREADS

Там в трех потоках (с наглядным визуальным оформлением) три сортировки выполняються, соответственно: Buble, Selection, Quick.

Совсем немного (еще на уровне плагиата) измениш код и получишь свой курсак.

Удачи еще раз.


 
begin...end ©   (2004-10-28 21:02) [24]

Так курсовые вроде в конце семестра сдают? Или это за предыдущий семестр?
А стреляться из-за курсового не стОит. Однозначно.


 
123 ©   (2004-10-28 22:51) [25]

Я извиняюсь, а там в массиве миллиард элементов или сколько? Я вот когда сортировал массив, то не то что на кнопку нажать, я глазом моргнуть не успел, как всё отсортировалось...


 
123 ©   (2004-10-28 22:53) [26]

Ой, пардон, не дочетал ветку до конца..
Но когда дочитал, то..
А зачем пользователю разрешать продолжать сортировку? Он что должен пошагово контролировать процесс?! Так а какая тогда польза от автоматизированной сортировки.. хай сам на листе себе сортирует..



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

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

Наверх




Память: 0.53 MB
Время: 0.029 c
6-1093915853
Смертник
2004-08-31 05:30
2004.11.14
Отправка почты по IMAP.


1-1099343328
ospa
2004-11-02 00:08
2004.11.14
как перехватить нажатие клавиш на клавиатуре?


3-1098019361
ILUHA
2004-10-17 17:22
2004.11.14
Помогите с IBDatabase


1-1098619219
ali_t
2004-10-24 16:00
2004.11.14
аналог find in files из delphi


1-1098857205
sapsi
2004-10-27 10:06
2004.11.14
Прокрутка грида колесиком мыши