Главная страницаОбратная связьКарта сайта

Поток с доступом к глобальной переменной основной программы

Автор: Xavier Pacheco

unit Main;

interface

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

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

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

{ NOTE: Change GlobalStr from var to threadvar to see difference }
var
  //threadvar
  GlobalStr: string;

type
  TTLSThread = class(TThread)
  private
    FNewStr: string;
  protected
    procedure Execute; override;
  public
    constructor Create(const ANewStr: string);
  end;

procedure SetShowStr(const S: string);
begin
  if S = "" then
    MessageBox(0, PChar(GlobalStr), "The string is...", MB_OK)
  else
    GlobalStr := S;
end;

constructor TTLSThread.Create(const ANewStr: string);
begin
  FNewStr := ANewStr;
  inherited Create(False);
end;

procedure TTLSThread.Execute;
begin
  FreeOnTerminate := True;
  SetShowStr(FNewStr);
  SetShowStr("");
end;

procedure TMainForm.Button1Click(Sender: TObject);
begin
  SetShowStr("Hello world");
  SetShowStr("");
  TTLSThread.Create("Dilbert");
  Sleep(100);
  SetShowStr("");
end;

end.

Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Поток с доступом к глобальной переменной основной программы", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2018 Дискета.info