Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2013, 18:18   #1
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию Проблема с потоком

В потоке делаю чтобы выводилось сообщение через заданное время.
Время задаю в optionform.RzComboBox1.
При работе потока программа зависает.
Вот мой Unit потока
Код:
unit MyThread;
// С повтором

interface

uses
  Classes,WinSock,Windows,Messages,Dialogs,SysUtils;
type
IPINFO = record
Ttl :char;
Tos :char;
IPFlags :char;
OptSize :char;
Options :^char;
end;

type
ICMPECHO = record
Source :longint;
Status :longint;
RTTime :longint;
DataSize:Shortint;
Reserved:Shortint;
pData :^variant;
i_ipinfo:IPINFO;
end;

type
  TCountObj = class(TThread)
  private
    { Private declarations }
   
  protected
    procedure Execute; override;

  end;

implementation

uses Main,option;

function TimeToSecond(S: string): Integer;
var
 i: integer;
begin
 i:=StrToInt(trim(copy(S,1,2)))*3600+StrToInt(trim(copy(S,4,2)))*60;
 Result:=StrToInt(trim(copy(S,1,2)))*3600+StrToInt(trim(copy(S,4,2)))*60;
end;

 procedure Delay(ms : longint);
             var
               TheTime : LongInt;
             begin
               TheTime := GetTickCount + ms;
             end;

procedure TCountObj.Execute;
var
i:integer;
ATO:string;
begin

for i:=0 to 2 do
begin
ShowMessage('  Повтор')
end;
  case optionform.RzComboBox1.ItemIndex of
        0: ATO := IntToStr(3600);
        1: ATO := IntToStr(3600 * 3);
        2: ATO := IntToStr(3600 * 12);
        3: ATO := IntToStr(3600 * 24);
        4: ATO := IntToStr(3600 * 48);
        5: ATO := IntToStr(3600 * 24 * 7);
        6: ATO := IntToStr(3600 * 24 * 30);
        7: ATO := IntToStr(3600 * 24 * 365);
        8: ATO := IntToStr(TimeToSecond(optionform.RzMaskEdit1.Text));
      end;

Delay(10000*strtoint(ATO));
   if terminated then
    exit;
 end;
 end.
Aleksandr вне форума Ответить с цитированием
Старый 28.03.2013, 18:45   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

http://programmersforum.ru/showpost....59&postcount=2 и далее по ссылкам
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с потоком! vovken1997 Общие вопросы Delphi 2 12.04.2012 21:21
Проблема с потоком ZekaUa Общие вопросы Delphi 4 01.02.2012 15:29
Проблема с потоком timur oO Помощь студентам 2 14.04.2010 17:02
Проблема с потоком Araver Общие вопросы Delphi 4 16.10.2007 04:30