Форум: "Потрепаться";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизПрервание выполнения процедуры до нажатия кнопки Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.039 c