|
|
Регистрация | << Правила форума >> | 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.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |