Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.037 c
1-1099404621
Kraj
2004-11-02 17:10
2004.11.14
ICQ


14-1099084497
Alein
2004-10-30 01:14
2004.11.14
SkinMaker_ство.


1-1099386557
Yurij-7
2004-11-02 12:09
2004.11.14
ComboBox


14-1098877983
Charli
2004-10-27 15:53
2004.11.14
RxLib


1-1098909229
dms_main
2004-10-28 00:33
2004.11.14
debug DLL





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