Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2009, 16:15   #1
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
Сообщение Публичные переменные

Привет люди.
подскажите пожалуйста:
есть у меня 1 проект,в нем несколько форм...
на одной форме описал несколько переменных
как сделать так, чтобы эти переменные были доступны для всех форм?
)Игнат( вне форума Ответить с цитированием
Старый 27.07.2009, 16:24   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Берешь основной модуль, объявляешь в нем переменные, затем во втором модуле пишешь в разделе юзес название основного модуля (например Unit1), все, теперь они доступны.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 28.07.2009, 00:06   #3
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Alex Cones, вы забыли кое-что упомянуть, надо переменные объявлять в секции public, чтобы они были доступны в других формах.
Код:
 public
  perem1: string;
  perem2, perem3: byte;
  ...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 28.07.2009, 17:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
надо переменные объявлять в секции public
Вообще-то автору нужны не поля класса а просто глобальные переменные, так что скорее всего Alex Cones вернее сказал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.08.2009, 07:28   #5
Nowichok
Пользователь
 
Регистрация: 23.11.2006
Сообщений: 53
По умолчанию

Чтобы не создават отдельную тему - спрошу и здесь.
А возможно ли сделать переменную ГЛОБАЛЬНОЙ для всех форм, НЕ ВКЛЮЧАЯ изначальную форму во все остальные.

Порой из формы нужна лишь одна переменная. Допустим, нужна переменная из Form1 А пропись в другой форме (form2) в разделе Uses form1 приводит (на колкьо помню) к тому, что весь код Form1 вставляется в form2. Да и неудобно это. А я всегда был за компактный код.

Можно ли как-то вынести переменную в "общую память программы", чтобы всегда можно было получить доступ к ней. ?
Nowichok вне форума Ответить с цитированием
Старый 21.08.2009, 07:38   #6
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Nowichok Посмотреть сообщение
Чтобы не создават отдельную тему - спрошу и здесь.
А возможно ли сделать переменную ГЛОБАЛЬНОЙ для всех форм, НЕ ВКЛЮЧАЯ изначальную форму во все остальные.

Порой из формы нужна лишь одна переменная. Допустим, нужна переменная из Form1 А пропись в другой форме (form2) в разделе Uses form1 приводит (на колкьо помню) к тому, что весь код Form1 вставляется в form2. Да и неудобно это. А я всегда был за компактный код.

Можно ли как-то вынести переменную в "общую память программы", чтобы всегда можно было получить доступ к ней. ?
Переменные, объявленные в var , между блоками Interface и Implementation, являются глобальными, но юнит в котором они объявлены должен быть добавлен в uses тех юнитов, где вы хотите эти переменные заюзать.
Altera вне форума Ответить с цитированием
Старый 21.08.2009, 07:43   #7
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Вот есть у вас один юнит:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  X : integer;

implementation

{$R *.DFM}

end.
И вы хотите, чтобы переменная X была доступна в другом. Так вот - нужно просто сделать так:
Код:
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.DFM}

end.
Ключевые моменты - жирным шрифтом.
BaronTreep вне форума Ответить с цитированием
Старый 21.08.2009, 14:06   #8
Nowichok
Пользователь
 
Регистрация: 23.11.2006
Сообщений: 53
По умолчанию

)) Это, конечно, понятно. Спасибо . Но я хотел избежать этого прописывания в каждомю юните в разделе Uses нудной формы.

Решение нашлось тем, что вроде можно из любой формы обращаться к глобальной переменной Application.Tag
Nowichok вне форума Ответить с цитированием
Старый 21.08.2009, 14:26   #9
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Nowichok Посмотреть сообщение
)) Это, конечно, понятно. Спасибо . Но я хотел избежать этого прописывания в каждомю юните в разделе Uses нудной формы.

Решение нашлось тем, что вроде можно из любой формы обращаться к глобальной переменной Application.Tag
Хе хе хе, а вы думаете переменная Application, откуда берётся? Она прописана в модуле Forms. Если уберёте модуль Forms из uses, то и к Application.Tag не сможете обратиться.
Altera вне форума Ответить с цитированием
Старый 21.08.2009, 15:10   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
хотел избежать этого прописывания в каждомю юните
А почему? Что в этом некошерного?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переменные Артэс Общие вопросы C/C++ 11 23.06.2009 12:12
Строковые переменные NightFire Помощь студентам 1 23.03.2009 06:20
Переменные скрипта wall66 PHP 7 12.12.2008 17:14
Переменные из БД Кронос БД в Delphi 2 06.06.2007 11:26