Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.04.2013, 22:15
Pcrepair
 
Сообщения: n/a
По умолчанию Управление циклом FOR

Добрый день. Есть код:
Код:
var
  Main: TMain;
  gFlag:Boolean;
implementation
..............
procedure TMain.Button1Click(Sender: TObject);
(* 25.04.13 Поцедура, время работы 20...30 сек*)
procedure TotalLoader(Str:string);
begin
  gFlag:=False; 
  (*много всякого*)
  gFlag:=True;  (*в конце работы устанвливает флаг*)
end;
(*-------------------------------------------*)

var I:integer;  StrRequest,FullListOfRequest:string;
begin
if (Memo1.Lines.Count > 0) then    
  begin
  for I := 0 to Memo1.Lines.Count-1 do
    begin
      StrRequest:=Memo1.Lines[i];  
      TotalLoader(StrRequest);     (*вызов асинхронной процедуры*)
      // нужно преостановить выполнение цикла пока не отработает TotalLoader
      // и не установит gFlag:=True;
    end;
  end
  else  ShowMessage('Enter Search Request!');
end;

Вопрос: есть ли возможность(как?) управлять работой цикла, или надо как то по другому?
Ответить с цитированием
  #2  
Старый 26.04.2013, 22:21
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Что значит "управлять"? Если вырубить раньше срока - (@i)^ := Memo1.Lines.Count.
Однако вообще-то по-хорошему в таких случаях юзают цикл while. Потому что арифметический цикл по определению - цикл с заранее известным количеством итераций. В противном случае это уже извращение и запутывание кода.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 26.04.2013 в 22:23.
Ответить с цитированием
  #3  
Старый 26.04.2013, 22:22
Pcrepair
 
Сообщения: n/a
По умолчанию

там же написано: приостановить.....
Ответить с цитированием
  #4  
Старый 26.04.2013, 22:26
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Если нужно приостановить, выноси код с циклом в таймер (только должен быть уже не цикл) и останавливай когда нужно.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 26.04.2013, 22:32
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

В асинхронной функции по завершению поставить событие, в цикле сделать WaitForSingleObject.
Если имеется в виду дождаться завершения асинхронной функции.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 26.04.2013 в 22:35.
Ответить с цитированием
  #6  
Старый 26.04.2013, 22:36
Pcrepair
 
Сообщения: n/a
По умолчанию

Цитата:
Сообщение от Bargest
В асинхронной функции по завершению поставить событие, в цикле сделать WaitForSingleObject.
WaitForSingleObject - это что то самопальное или из состава делфи?
на что это похоже? типа Sleep?
Ответить с цитированием
  #7  
Старый 26.04.2013, 22:34
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А нафик тогда вообще нужна асинхронная процедура, если вы тупо ждете ее завешения?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
Bargest (26.04.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:21.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025