![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день. Решил эту проблему Frames.
Unit1 - главное окно программы с pagecontol Unit2 - Frames - отдельная программа Все работает но дело в том что: При создании переменной в Unit2 она становится глобальной и доступна в Unit1. Тем самым я не могу использовать такую систему из-за конфликта переменных. Использовать переменные в классе как вариант, но при использовании какого либо компонента выскакивают ошибки. Допустим мне нужно создать переменную во Frames (Unit2) при открытии программы. Как это сделать? Если я пишу в главном окне программы: Код:
procedure TForm1.FormCreate(Sender: TObject); begin Frame21.CS := TCriticalSection.Create; end; А в Unit2: Код:
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
Vcl.Samples.Spin, SyncObjs;
type
TFrame2 = class(TFrame)
Button1: TButton;
Memo1: TMemo;
private
{ Private declarations }
public
CS: TCriticalSection;
{ Public declarations }
end;
Parser = class(TThread)
private
protected
procedure Execute; override;
public
constructor Create(CreateSuspended: Boolean);
end;
var
Frame: TFrame2;
CountAcc: integer;
Work: boolean;
implementation
{$R *.dfm}
constructor Parser.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;
procedure Parser.Execute;
begin
while Work do
begin
try
Frame.CS.Enter;
Inc(CountAcc);
//Прочий код
Frame.CS.Leave;
// Прочий код
except On E:Exception do begin
showmessage(e.Message);
sleep(1000);
end;
end;
end;
end;
end.То при запуске потоков получаю ошибку в showmessage(e.Message); ![]() Если я тупо создам в Unit2: var CS: TCriticalSection; То переменная будет доступна в Unit1 без приставки Frame21. Последний раз редактировалось M.A.D.M.A.N., 01.09.2013 в 21:24. |
|
#2
|
||||
|
||||
|
Прописывать переменную в секции implementation.
|