![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Private и public [D7, XP]
Merry © (2006-09-29 20:59:00)В одном модуле unit main объявляю:
Public
Var1:extended;
….
Далее присваиваю:
Var1:=StrToFloat(Edit1.Text);
В другом модуле unit otchet использую:
Uses main;
Но почему-то переменная var1, когда её вызываю в этом модуле otchet,
не известна и не считывается из unit main.
Как сделать, чтобы объявленное значение переменной в первом модуле, было известно второму модулю?
RASkov (2006-10-01 01:21:00) [1]> [15] Kolan © (01.10.06 01:19)
Называется "Семь раз прочти один запость" © NewПословица
RASkov (2006-10-01 01:19:00) [2]> [12] Loginov Dmitry © (30.09.06 23:03)
Ладно.... уговорили:)
Kolan (2006-10-01 01:19:00) [3]
> Нет:)
А я уж дамал я сума сошел :)
RASkov (2006-10-01 01:17:00) [4]> [13] Kolan © (01.10.06 00:34)
Нет:) Вместо Unit1 надо Form1.... А вот для глобальных unit1.
Kolan (2006-10-01 00:34:00) [5]
> RASkov (30.09.06 00:02) [8]
И что скомпилилось?
Loginov Dmitry (2006-09-30 23:03:00) [6]RASkov (30.09.06 22:56) [11]
Или мой ответ протеворечит?
[8] - это полнейший бред
RASkov (2006-09-30 22:56:00) [7]> [9] Desdechado © (30.09.06 15:04)
Согласен, только я не говорил, что так нужно делать, я имелл ввиду как можно.
> Как сделать, чтобы объявленное значение переменной в первом
> модуле, было известно второму модулю?
Или мой ответ протеворечит? А уж создано или нет, в момент обращения, на совести программера.
Kolan (2006-09-30 17:39:00) [8]Тут переводчик еще работал:
> В одном модуле unit mainобъявляю:
А тут поломался?
> В другом модуле unit otchetиспользую:
otchet = Report
Desdechado (2006-09-30 15:04:00) [9]RASkov (30.09.06 00:02) [8]
> with unit1 do begin //указываем из кокого модуля брать "переменную"
Глупости. Без создания экземпляра TForm1 и обращения к нему никакие unit1 не помогут.
RASkov (2006-09-30 00:02:00) [10]> Merry
unit unit1;
....
type
TForm1 = class(TForm)
....
public
Int: Integer;
Bt: Boolean;
S: String;
Var1:extended;
end;
....
Var1:=StrToFloat(Edit1.Text);
.....
unit unit2;
....
implimintation
uses unit1;
procedure xxx;
begin
with unit1 do begin //указываем из кокого модуля брать "переменную"
Int:=5;
B:=True;
S:='stroka';
ShowMessage(FloatToStr(Var1));
end;
end;
А вооще "глобальную" переменную то так [6]
и [7]:)
DrPass (2006-09-29 23:11:00) [11]//только про точку с запятой после extended не забудь
DrPass (2006-09-29 23:10:00) [12]
> Как сделать, чтобы объявленное значение переменной в первом
> модуле, было известно второму модулю?
Медленно поднимаешь свой пытливый взор вверх по тексту, пока не встретишь строки вида
type
TForm1 = class(TForm)
Сделай так:
var
var1: Extended
type
TForm1 = class(TForm)
Zeqfreed (2006-09-29 21:08:00) [13]> [3] Merry (29.09.06 21:05)
Это не переменная, а поле конкретного объекта или класса (если объявлено как классовое). Доступ к нему, соответствунно, осуществляется с указанием имени экземпляра (или самого класса) и последующим разыменовыванием оного.
Zeqfreed (2006-09-29 21:06:00) [14]> [0] Merry (29.09.06 20:59)
Экземпляр класса писать не забываешь?
Merry (2006-09-29 21:05:00) [15]Тогда вообще: Как сделать, чтобы объявленное значение переменной в первом модуле, было известно второму модулю?
Джо (2006-09-29 21:05:00) [16]Если "public", то это уже не "переменная", а поле или свойство какого-то класса.
Palladin (2006-09-29 21:01:00) [17]
> когда её вызываю в этом модуле otchet,
переменные (а в данном случае аттрибут класса) не вызываются, бо не исполняемый код... и не призываются, бо не святой дух и не призывники...
> не известна и не считывается из unit main.
и как это выражается?