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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2014, 13:21   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит это событие кнопке не назначено )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2014, 13:46   #12
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Значит это событие кнопке не назначено )
Ну а как тогда назначить?

Я подключил к дополнительному потоку, основной!

Назначил событие кнопке в этом потоке. Что еще то?

Название класса в основном потоке:
Код:
TForm1 = class(TForm)
А в дополнительном
Код:
TFormMain = class(TForm)
Если назначить одинаковые, то при запуске приложения будет ошибка.
bilibian вне форума Ответить с цитированием
Старый 26.01.2014, 13:51   #13
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Я подключил к дополнительному потоку, основной!
Вот отсюда желательно подробнее. Что значит подключил к дополнительному потоку основной?
northener вне форума Ответить с цитированием
Старый 26.01.2014, 14:12   #14
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Вот отсюда желательно подробнее. Что значит подключил к дополнительному потоку основной?
Ну TForm (класс который создается при создании проекта) его я подключил в дополнительный поток TThreat

Код:
type
  TFormMain = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

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

Далее прописал событие для кнопки Button1 уже в доп потоке
bilibian вне форума Ответить с цитированием
Старый 26.01.2014, 14:21   #15
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Ну TForm (класс который создается при создании проекта) его я подключил в дополнительный поток TThreat
Цитата:
Далее прописал событие для кнопки Button1 уже в доп потоке
<telepator on>
Дай угадаю. В модуль где прописан доппоток T1 = class(TThread) ты добавил строки
Код:
type
  TFormMain = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
И решил что эта TFormMain = class(TForm) будет означать главную форму твоего проекта, а Button1: TButton; будет той самой кнопкой, которую ты нажимаешь?
<telepator off>
northener вне форума Ответить с цитированием
Старый 26.01.2014, 14:36   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ну а как тогда назначить?
Архивируй проект целиком и прикладывай его сюда.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2014, 15:57   #17
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
<telepator on>
Дай угадаю. В модуль где прописан доппоток T1 = class(TThread) ты добавил строки
Код:
type
  TFormMain = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
И решил что эта TFormMain = class(TForm) будет означать главную форму твоего проекта, а Button1: TButton; будет той самой кнопкой, которую ты нажимаешь?
<telepator off>
В яблочко, тебе бы на битву экстрасенсов


По сути у меня есть рабочая версия проекта.

Событие для кнопки я прописал в основном потоке TForm1 которая запускает доп поток TThread и это работает без проблем.

Просто хотел сделать все в одном месте, плюс нет возможности проверить свойство terminated из основного потока.

Последний раз редактировалось bilibian; 26.01.2014 в 15:59.
bilibian вне форума Ответить с цитированием
Старый 26.01.2014, 17:00   #18
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Просто хотел сделать все в одном месте
Ну так перенеси описание класса доппотока в модуль главной формы.
northener вне форума Ответить с цитированием
Старый 28.01.2014, 14:35   #19
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Использую таймер в котором каждые 10 мин запускается скрипт.


Решил вынести выполнение этого кода в отдельный поток.

Подключаем поток к главному модулю:

Код:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

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

var
  Form1: TForm1;
  T:Thread;

В самом таймере пишем:

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  T:=Thread.Create(true);
  T.FreeOnTerminate:=true;
  T.Resume;
  T.Priority:=tpNormal;
end;

На кнопке запуска пишу код:

procedure TForm1.Button1Click(Sender: TObject);
Код:
begin
  if form1.timer1.Enabled = true then 
  begin
    form1.timer1.Enabled := false;
    form1.button1.Caption:='Старт';
  end 
  else 
  begin
    form1.timer1.Enabled := true;
    form1.button1.Caption:='Стоп';
  end;
end;

Код:
procedure Thread.Execute;
begin
   код который должен выполниться при запуске таймера.
end;
В итоге нихрена не работает. В чем трабла?
bilibian вне форума Ответить с цитированием
Старый 28.01.2014, 19:21   #20
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Использую таймер в котором каждые 10 мин запускается скрипт.
Решил вынести выполнение этого кода в отдельный поток.
В поток или в потоки? В один или во многие?

Цитата:
В итоге нихрена не работает. В чем трабла?
А что тут в представленном коде должно работать и как должно работать?
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Грамотное завершение потока, если поток на паузе winhttp Общие вопросы .NET 3 11.01.2013 12:55
Завершение потока coNsept Общие вопросы C/C++ 3 20.06.2012 19:42
Принудительное завершение потока не работает :(! TEED! Работа с сетью в Delphi 3 06.06.2012 14:34
C# BackgroundWorker - завершение работы потока Lastsummer Помощь студентам 2 16.03.2011 18:04
Как отследить завершение выполнения потока TThread? Трик Общие вопросы Delphi 3 24.10.2007 14:55