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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.04.2013, 04:46
katsoha katsoha вне форума
Прохожий
 
Регистрация: 01.04.2013
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Помогите пожалуйста с параллельным потоком

Доброго времени суток господа!
Имеется программа передачи данных по 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.
Ответить с цитированием
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter