Текущий архив: 2006.04.02;
Скачать: 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 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.038 c