|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите пожалуйста с параллельным потоком
Доброго времени суток господа!
Имеется программа передачи данных по LPT порту для Win XP. Все работает, данные передаются, но проблема в том что когда клиент не отвечает программа переходит в режим ожидания клиента (в данном случае бесконечный цикл). Необходимо сделать так, чтобы программа останавливалась и выходила по кнопке "Выход". Если программа в бесконечном цикле, то на кнопку она не реагирует. Проект если что скину. Заранее благодарен !!! Код:
procedure TForm1.Button2Click(Sender: TObject); begin memo2.clear; ProgressBar1.position:=0; Label6.Caption:=inttostr(0); Label4.Caption:=inttostr(0); { for i:=1 to 100000 do symv[i]:='';} AssignFile(f,paramStr(1)); reset(F); i:=0; flag:=true; while not EOF(F) and flag=true do begin read(f,ch); // Memo1.Text:=memo1.Text+c; if ch<>#10 then begin if ((symv[i-3]<>'M') or (symv[i-2]<>'0') or (symv[i-1]<> '2')) then begin symv[i]:=ch; inc(i); end else begin flag:=false;{----------------------------------------------------------} symv[i]:=#13; inc(i); end; end; end; p:=i; ProgressBar1.max:=p; Label6.Caption:=inttostr(round(i/1000)); for i:=0 to p-1 do//while not EOF(F) do begin repeat if not(d) then Label2.Font.Color:=clred; Label2.Caption:= 'Ожидание готовности станка'; Application.ProcessMessages(); d:=pin10; // delayUS(300); Until (d); ProgressBar1.position:=i; Label4.caption:=inttostr(round(i/p*100)); if symv[i]<>#13 then Begin {***************************** Отправка данных ********************************} MAD: Тег code а не quote Последний раз редактировалось M.A.D.M.A.N., 05.04.2013 в 09:49. |