Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Глобальные переменные delphi [D7, XP]


XTasy ©   (2009-10-15 16:38:00) 

Всем добрый день. Проблема следующая:
Необходимо передать строковую переменную из одной формы в другую.
Для этой цели создал в отдельном модуле переменную в разделе interface, в первой форме ее заполняю, скрываю эту форму и показываю вторую. А вот во второй эта переменная почему-то пустая, т.е. значения из первой формы не выдает. Что я делаю не так? заранее спесибо


uno-84   (2009-10-16 11:47:00) [1]

Можно не исползовать глобальную переменную, а просто нужное значение передать в функцию второй формы к примеру


procedure TForm1.SomeMethod;
begin
SomeGlobalVar := 'если делать так, то косяка не будет';
TForm2.SomeMethod(SomeGlobalVar);
end;

procedure TForm2.SomeMethod(AStr: String);
begin
ShowMessage(AStr);
end;


Плохиш   (2009-10-15 21:13:00) [2]


> XTasy   (15.10.09 17:14) [8]
>
> clickmaker , вполне возможно, что и в других юнитах я буду
> использовать эту переменную) так в чем же косяк?

В первом посте уже сказали.
Советую нанять программиста, незачем сантехникам заниматься не своим делом.


Jeer   (2009-10-15 17:51:00) [3]


> XTasy   (15.10.09 17:14) [8]
>
>.. вполне возможно, что и в других юнитах я буду
> использовать эту переменную)..


Заведи отдельный unit без формы для всяких глобальных переменных, констант и включай в визуальные юниты.


clickmaker   (2009-10-15 17:31:00) [4]

> так в чем же косяк?

unit1:
interface

var
 SomeGlobalVar: string;

unit2:

uses unit1;

procedure TForm1.SomeMethod;
begin
 SomeGlobalVar := 'если делать так, то косяка не будет';
end;

unit3:

uses unit1;

procedure TForm2.SomeMethod;
begin
 ShowMessage(SomeGlobalVar);
end;


XTasy   (2009-10-15 17:14:00) [5]

clickmaker , вполне возможно, что и в других юнитах я буду использовать эту переменную) так в чем же косяк?


  (2009-10-15 17:13:00) [6]

Удалено модератором


clickmaker   (2009-10-15 16:56:00) [7]

> Если он вообще неверный

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


Anatoly Podgoretsky   (2009-10-15 16:56:00) [8]

> Медвежонок Пятачок  (15.10.2009 16:53:04)  [4]

Лечу по фотографии, фотография не нужна.


Медвежонок Пятачок   (2009-10-15 16:53:00) [9]

для лечения по фотографии фотография все же нужна.


XTasy   (2009-10-15 16:51:00) [10]

естественно,я прописал имя модуля в разделе uses
Этот способ нашел на одном из форумов.
Если он вообще неверный, подскажите, как надо


Медвежонок Пятачок   (2009-10-15 16:48:00) [11]

А вот во второй эта переменная почему-то пустая

во второй форме она не может быть пустой, так как ее там вообще нет.
она у тебя в "отдельном модуле".


Dennis I. Komarov   (2009-10-15 16:42:00) [12]

У тебя ошибка в программе, предположительно в 17-й строке...


Наверх

Титульная страница Поиск, карта сайта Написать письмо