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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2013, 10:14   #21
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Тогда твой все равно не верен.
Код:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, lib;

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

var
m:integer;

implementation

uses Unit1;

procedure thread2.RichEditAdd2;
begin
Form1.sRichEdit2.Lines.Add(IntToStr(m));
end;

procedure thread2.Execute;
begin
Form1.sButton8.Enabled:=True;
Form1.sButton4.Enabled:=False;
Form1.sButton9.Enabled:=False;
Synchronize(Form1.sRichEdit2.Clear);
for m:=Form1.sSpinEdit2.Value-0 to Form1.sSpinEdit3.Value do
if not Terminated then
Synchronize(RichEditAdd2)
else break;
Form1.sButton8.Enabled:=False;
Form1.sButton4.Enabled:=True;
Form1.sButton9.Enabled:=True;
end;

end.

Последний раз редактировалось Кольша; 06.07.2013 в 10:19.
Кольша вне форума Ответить с цитированием
Старый 06.07.2013, 10:18   #22
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

может и не верен, но ты всеровно мне доказывал что должно стоять while! while используется если к примеру нужно отправлять один и тот же запрос 1 000 000 раз пока сам не остановишь, вобщем при редких случаях, ща посмотрю что ты выше дал.

цитирую с прошлой страницы:
на видео видно что используя while , одни и те же числа выдает 1 000 000 раз, только если сам не нажму кнопку СТОП, а если делать через if то числа выдаст только 1 раз и сообщит что работа завершена!
FleXik вне форума Ответить с цитированием
Старый 06.07.2013, 10:21   #23
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

да и вообще, Кольша, с кодом что я давал выше все хорошо (кнопка СТОП работает отлично), я уже 3-5 раз говорю что в другом Unit'е кнопка СТОП почему-то не хочет работать (жму СТОП а софт и дальше работает почему-то), я и создал эту тему может кто-то с подобным сталкивался...

if not Suspended then // если делать через "Паузу" то кнопка "Стоп" работает (я так всегда и делал как я уже и говорил) но я не пойму почему через Terminated не хочет работать, бред какой-то
FleXik вне форума Ответить с цитированием
Старый 06.07.2013, 10:24   #24
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Ну так и скидывай код другого юнита, вместе с запуском и остановкой .
Кольша вне форума Ответить с цитированием
Старый 06.07.2013, 10:30   #25
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

delete......

Последний раз редактировалось FleXik; 06.07.2013 в 10:51.
FleXik вне форума Ответить с цитированием
Старый 06.07.2013, 10:36   #26
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, lib, Math, ssl_openssl;

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

implementation

uses Unit1;

procedure th_potok.EndWork;
begin
MessageDlg(IntToStr(Form1.sRichEdit1.Lines.Count), mtInformation, [mbOK], 0);
end;

procedure th_potok.RichEditAdd;
begin
Form1.sRichEdit1.Lines.Add(Form1.sEdit3.Text);
Form1.sLabel10.Caption:=IntToStr(Form1.sRichEdit1.Lines.Count);
end;

procedure th_potok.Execute;
var
// тут были переменные типа string
i:integer;
s1, s2:TStringList;
begin
Form1.sButton5.Visible:=False;
Form1.sButton6.Visible:=True;
Names:=TStringList.Create;
Pages:=TStringList.Create;
Names.LoadFromFile(Form1.sFilenameEdit1.FileName);
Pages.LoadFromFile(Form1.sFilenameEdit2.FileName);
if not self.Terminated then//self на всякий случай
begin
Synchronize(Form1.sRichEdit1.Clear);
Form1.sLabel10.Caption:='0';
for i:=0 to Min(s1.Count,s2.Count)-1 do
begin
if self.Terminated then break;//если ты нажал на кнопку стоп, то цикл останваливается пробуй так
//код не дам, тут все 100% ок
Synchronize(RichEditAdd);
end;
Synchronize(EndWork);
Form1.sButton6.Visible:=False;
Form1.sButton5.Visible:=True;
end;
end;

end.
Кольша вне форума Ответить с цитированием
Старый 06.07.2013, 10:37   #27
Xo66um
Форумчанин
 
Регистрация: 11.05.2013
Сообщений: 154
По умолчанию

Неправильно понял)

Последний раз редактировалось Xo66um; 06.07.2013 в 10:38. Причина: Неправильно понял)
Xo66um вне форума Ответить с цитированием
Старый 06.07.2013, 10:37   #28
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Цитата:
Сообщение от Xo66um Посмотреть сообщение
А в глобальной переменной поток назначен?
Код:
Form1: TForm1;
Thread: thr_potok;

...
Thread.Terminate;
естественно, в первом Unit'е
FleXik вне форума Ответить с цитированием
Старый 06.07.2013, 10:44   #29
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Кольша, пашет вроде но после нажатия кнопки СТОП еще выполняет код до конца, т.е не моментально останавливает
FleXik вне форума Ответить с цитированием
Старый 06.07.2013, 10:45   #30
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

FleXik, На будущее научись составлять хотя бы мини блок схемы или понимать как работают твои условия.Почему?Потому что из за этого поток и не останавливался.
Добавляй условие
Код:
if self.Terminated then break;
после каждой строчки в цикле,и все будет норм.
А если нужна полнейшая остановка, замени break на exit
Кольша вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с потоками. Aleksandr Общие вопросы Delphi 9 12.03.2013 20:56
Управление потоками vandrouny Win Api 12 04.01.2011 03:52
Ошибка с потоками C# MyXa Общие вопросы .NET 3 25.08.2010 16:54
работа с потоками session Общие вопросы C/C++ 6 21.06.2010 17:13
Проблемы с потоками в С m9yt Общие вопросы C/C++ 4 14.04.2010 14:25