Не запускается проект с Thread, где ошибка?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Не запускается проект с Thread, где ошибка?

Сообщение McLion » 11.05.2016 12:39:40

Привет,

хочу с F9 запустить проект, в котором стартует thread, но не пускается, ошибок тоже не выдает. Что делать? Этот же самый код с Delphi 7 работает, а вот на лазарусе нет.

Код: Выделить всё
unit Unit1;

{$mode delphi}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  StdCtrls;


type
  TMyThread = class(TThread)
    procedure Execute; override;
  end;


type

  { TForm1 }

  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  i: Integer;

implementation

{$R *.lfm}

{ TForm1 }

procedure TMyThread.Execute;
begin
  { Threadcode }
  try
    i := 11;
  except
    on E: Exception do begin
      // Errors...
    end;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := IntToStr(i);
  i := i + 1;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Thread1: TMyThread;
begin
  Thread1 := TMyThread.Create(False); // стартуем сразу
  Thread1.FreeOnTerminate := True;
  Thread1.Terminate;
  i := 0;
end;

end.

Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Не запускается проект с Thread, где ошибка?

Сообщение Osmiy » 11.05.2016 12:59:03

Может это оттого, что Thread1 локальная переменная.
Osmiy
новенький
 
Сообщения: 44
Зарегистрирован: 07.05.2016 21:18:39

Re: Не запускается проект с Thread, где ошибка?

Сообщение McLion » 11.05.2016 13:04:53

Osmiy писал(а):Может это оттого, что Thread1 локальная переменная.


Ок, исправил, но ничего не изменилось.
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Не запускается проект с Thread, где ошибка?

Сообщение Ichthyander » 11.05.2016 13:17:59

А как определили, что TThread не запускался? По Label1,начинающий отчет с 11? Отладчиком не пробовали контрольные точки ставить, что показывает, проходит? Попробуйте запускать поток по другому событию, OnShow или OnClick. Может в этом дело
Да, я когда пробовал в Linux запустить свою работающую в Windows программу с потоками тоже сразу не завелось, оказалось какой-то ключ (cthreads или типа того) надо добавить и еще кое-что сделать
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Не запускается проект с Thread, где ошибка?

Сообщение McLion » 11.05.2016 13:25:34

Весь проект не запускается, программа вообще не рисуется.
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Не запускается проект с Thread, где ошибка?

Сообщение Ichthyander » 11.05.2016 13:28:32

McLion писал(а):Весь проект не запускается, программа вообще не рисуется.

Ну вот попробуйте закомментировать временно пуск потока в методе FormCreate. Просто возможно вылетает, не завершив создание главной формы Если не поможет создайте проект пустышку и перенесите последовательно весь функционал Вашего демо проекта. Я бы так сделал, ведь причина может и не в работе TThread :) , в этом случае причина найдется обязательно
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Не запускается проект с Thread, где ошибка?

Сообщение McLion » 11.05.2016 13:31:51

Перенес все на Windows и заработало... причина где-то в линуксе короче.
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Не запускается проект с Thread, где ошибка?

Сообщение Ichthyander » 11.05.2016 13:40:51

McLion писал(а):Перенес все на Windows и заработало... причина где-то в линуксе короче.

Ну вот я выше писал, что у меня такая же была проблема в Linux. Поставьте ключ UseCThreads во вкладке другие проекта. Или в файле проекта .lpr
Код: Выделить всё
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}

Замените на
Код: Выделить всё
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 698
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Не запускается проект с Thread, где ошибка?

Сообщение McLion » 11.05.2016 13:42:47

Ок, попробую... спасибо!
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 252

Рейтинг@Mail.ru