19.07.2018, 01:31 [+3 UTC]
в нашей команде: 2 883 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Форум:
17.07.2018, 12:50

Последний вопрос:
16.07.2018, 07:17

Последний ответ:
13.07.2018, 17:32

Последняя рассылка:
18.07.2018, 16:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
31.03.2016, 12:25 »
galviktor
Спасибо, буду прорабатывать полученный материал. [вопрос № 189042, ответ № 273551]
20.11.2017, 16:18 »
Polina
Благодарю за разъяснения! [вопрос № 191808, ответ № 275601]
13.07.2010, 10:07 »
Dimon4ik
То, что надо! Спасибо smile [вопрос № 179472, ответ № 262511]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 311
mklokov
Статус: 6-й класс
Рейтинг: 23
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 3

Перейти к консультации №:
 

Консультация онлайн # 66615
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: Пепеляев Александр Павлович
Отправлена: 12.12.2006, 08:42
Поступило ответов: 4

Уважаемые эксперты, помогите пожалуйста.
Не силен в Delphi, и совсем не знаю что делать...

Есть модуль главной формы проекта - unit Main
И модуль потока - unit TestThread;

И есть переменные i, WorkFlag которые должны быть доступны во всех функциях и процедурах обоих модулей.

Где, в каком разделе нужно объявить эти переменные???

P.S.: Прилагаю код, но на него особо внимания не обращайте, это пробный вариант.

Приложение:

Состояние: Консультация закрыта

Ответ # 131185 от PaVeL_Ekt

Здравствуйте, Пепеляев Александр Павлович!

Объявляйте их в юните Main как глобальные;
где
Var Form1: TForm1;


Консультировал: PaVeL_Ekt
Дата отправки: 12.12.2006, 08:59

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 131269 от Химяк Виктор Васильевич

Здравствуйте, Пепеляев Александр Павлович!
Создайте третий модуль н-р uVariable, в котором опишите нужные переменные, а потом подключите его в Main и в TestThread.


Консультировал: Химяк Виктор Васильевич
Дата отправки: 12.12.2006, 17:11

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 131300 от Писарев, Павел, Юрьевич

Здравствуйте, Пепеляев Александр Павлович!
Насколько я знаю переменные, типы, константы, процедуры, функции и т. д. для того чтобы быть доступны в других модулях, где это модуль используется, должны быть описаны в интерфейсной (interface) части.


Консультировал: Писарев, Павел, Юрьевич
Дата отправки: 12.12.2006, 22:22

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 131302 от KiberZero

Здравствуйте, Пепеляев Александр!

Поясняю.Если форма в модуле Unit1 должна управлять формой в модуле Unit2,то в оператор uses модуля Unit1 должно быть включено имя второго модуля.В свою очередь,если форма в модуле Unit2 должна пользоваться процедурами или каким-либо кодом,содержащимся в модуле Unit1,то в uses модуля Unit2 должно быть введено имя модуля Unit1.

Смотрите структуру модуля,я всё пояснил:

unit Unit1; //имя модуля

interface //открытый интерфейс модуля

{Сюда могут помещаться списки подключаемых модулей,объявления типов,констант
переменных,фунций,процедур,К КОТОРЫМ БУДЕТ ДОСТУП ИЗ ДРУГИХ МОДУЛЕЙ}

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls; //список подключаемых модулей

type //объявляются классы формы
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private //закрытый раздел класса
{ Private declarations }
{Сюда могут помещаться объявления типов,констант переменных,фунций,
процедур,К КОТОРЫМ ДОСТУП ИЗ ДРУГИХ МОДУЛЕЙ ЗАКРЫТ}

public //открытый раздел класса
{ Public declarations }
{Сюда могут помещаться объявления типов,констант переменных,фунций,
процедур,КОТОРЫЕ НЕ БЫЛИ ВКЛЮЧЕНЫ В КЛАСС ФОРМЫ}

end;

var //ОБЪЯВЛЕНИЕ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ
Form1: TForm1;
{Сюда могут помещаться объявления типов,констант переменных,фунций,
процедур,К КОТОРЫМ ДОСТУП ИЗ ДРУГИХ МОДУЛЕЙ ЗАКРЫТ}

implementation //реализация модуля

uses Unit2; //ОБЪЯВЛЕНИЕ ССЫЛКИ НА ДРУГОЙ МОДУЛЬ
{Сюда могут помещаться списки подключаемых модулей,объявления типов,констант
переменных,фунций,процедур,не объявленных ранее,но К КОТОРЫМ НЕ БУДЕТ ДОСТУПА
ИЗ ДРУГИХ МОДУЛЕЙ}

{$R *.dfm}
{здесь помещается,собственно сам код программы,то есть процедуры,функции,
переменные,константы и т.д}

procedure TForm1.FormCreate(Sender: TObject);
begin
TForm2.Create(Application);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
Form2.Color:=clRed;
end;
end. //Завершение работы всего модуля
Следует так же заметить и это ВАЖНО!!!

Если вы используете циклические ссылки с помощью предложения uses, ни в коем случае нельзя их размещать в разделах interface!!!

Для первого модуля

unit Unit1

...

interface

uses ... Unit2

implementation

...

Для второго модуля

unit Unit2

...

interface

uses ... Unit1

implementation

При этом компилятор выдаст вам ошибку!

Правильно будет так:

Для первого модуля

unit Unit1

...

interface
implementation

uses ... Unit2
...

Для второго модуля

unit Unit1

...

interface
implementation

uses ... Unit2

...

Надеюсь,теперь вам стало ясно,куда помещать свои переменные.

Удачи!!


Консультировал: KiberZero
Дата отправки: 12.12.2006, 22:36

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 66615

Посетитель

ID: 17049

# 1

= общий = | 12.12.2006, 09:57 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Более точно: "Чтобы переменные были доступны везде, их надо объявлять в секции interface, а не implementation". Ну и uses, конечно.

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.19527 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.47 от 16.04.2018