Вниз
Скачать: CL | DM;

Как прервать выполнение цикла ?   Найти похожие ветки 

← →
kyn66 ©   (2006-03-16 12:12) [0]

Уважаемые мастера, внутри моего цикла выполняется проигрывание звукового файла, получаемого из ресурса. Как мне при необходимости прервать этот цикл. Кнопка, при клике по которой выполняется цикл блокируется, а хотелось при повторном клике по ней этот цикл прервать. ProcessMessage почему-то не помогает.

procedure TMainFrm.SayButtonClick(Sender: TObject);
Var
 i, j : Integer;
begin
 IsSay := not IsSay;
 Screen.Cursor := crHourGlass;
 Application.Processmessage;
 with SayStringGrid do
  for i := 0 to Pred(RowCount) do
   for j := 0 to Pred(ColCount) do
    if Cells[j, i] <> "" then
     begin
       SayDigit(Cells[j, i], 2);
       Delay(500);
       if not IsSay then
        Break;
     end;
 Screen.Cursor := crDEfault;
end;


← →
Сергей М. ©   (2006-03-16 12:15) [1]

Ты не туда влупил Application.Processmessages.
Его следует разместить в итерации цикла, а не перед входом в цикл.


← →
balepa ©   (2006-03-16 12:17) [2]

Сделай еще одну кнопку
А причем тут ProcessMessage?


← →
kyn66 ©   (2006-03-16 12:24) [3]

>Сергей М
> Его следует разместить в итерации цикла, а не перед входом в цикл.
Это как понять? Всмысле здесь?

with SayStringGrid do
 for i := 0 to Pred(RowCount) do
  for j := 0 to Pred(ColCount) do
   if Cells[j, i] <> "" then
    begin
      Application.Processmessage; <-- ???
      SayDigit(Cells[j, i], 2);
      Delay(500);
      if not IsSay then
       Break;
    end;


← →
Сергей М. ©   (2006-03-16 12:29) [4]

procedure TMainFrm.SayButtonClick(Sender: TObject);
Var
i, j : Integer;
begin
If IsSay then
   IsSay := False
else begin
  IsSay := True;
  while IsSay do begin
// вот она, та самая итерация цикла !
    ...
      Application.ProcessMessages;
    ...    
  end;
end;
end;


← →
Ega23 ©   (2006-03-16 12:33) [5]


> А причем тут ProcessMessage?


Как это "при чём"? Проигрывание же в основном потоке идёт...


← →
balepa ©   (2006-03-16 12:34) [6]


> Как это "при чём"? Проигрывание же в основном потоке идёт.
> ..

Да проехали уже


← →
balepa ©   (2006-03-16 12:38) [7]

p.s. Я думал у него Button.enabled:= false


← →
kyn66 ©   (2006-03-16 12:48) [8]

> Я думал у него Button.enabled:= false
Нет, форма вся блокируется. Для этого Processmessages и нужен....


← →
kyn66 ©   (2006-03-16 13:15) [9]

>>Сергей М
Спасибо за подсказку, помогло



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.034 c
8-1130085255
fghfg
2005-10-23 20:34
2006.04.02
проблемы с добавлением звука в AVI


15-1141641390
Некто
2006-03-06 13:36
2006.04.02
Когда-то здесь было сообщение про crossover и FreeBSD


15-1142249558
Мысль
2006-03-13 14:32
2006.04.02
Буфер


2-1142936552
tytus
2006-03-21 13:22
2006.04.02
Помогите с созданием компонента


2-1142885407
WestBronx
2006-03-20 23:10
2006.04.02
Проверка файла на "скрытый", отключение развёртывания.




   Наверх