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

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

Вопрос о модулях.


StasVashuk ©   (2003-10-06 16:40:00) 

Есть проэкт.

у него Uses a,tmp;

Модуль А имеет процедуру присваивания и функцию получения значения единственой его переменной "N" (Var N:word; которую можно поместить в позиции !1! и !2!.При этом понятно в позиции !1! "N" будет видна программе, которая использует "А", а в !2! не доступна.)(см ниже)

Модуль Tmp использует "a" и повторяет все его функции с буквой "T" в конце(см ниже).
В нём я ставил "Uses A;" в местах !A! и !B!.
Вопрос №1 - В чём разниза.

Далее, я протестировал ЭТО и получил (СМ программу) след. результаты, причём ни от положения Uses в "tmp" ни от положения var в "A" этот результат не зависит.
модуль а как бы есть в памяти в ОДНОМ экземпляре, и "А" и "Tmp" используют один и тот же модуль.

Вопрос №2, как сделать так, чтобы было как бы ДВА модуля "А" в памяти, один для программыЮ другой для модуля "TMP".

+++++
unit a;
interface
{!1!}
function getval: Word;
procedure setval(v: Word);
implementation
{!2!}
function getval: Word;
begin
result := n;
end;
procedure setval(v: Word);
begin
n:= v;
end;
end.
+++++
unit Tmp;
interface
{!A!}
function getvalT: Word;
procedure setvalT(v: Word);
implementation
{!B!}
function getvalT: Word;
begin
result := getval;
end;
procedure setvalT(v: Word);
begin
setval(v);
end;
end.
+++++
program Q;
uses a, tmp;
begin
setval(2);
setvalt(10);
writeln(getval){=10 в любом случае}
writeln(getvalT){=10 в любом случае}
end.
+++++


Digitman   (2003-10-07 14:00:00) [1]


> {=10 в любом случае}


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


pasha_676   (2003-10-07 11:30:00) [2]

Два модуля в памяти бесмыслиться. Модуль не может иметь экземпляры. Тебе надо понять что есть модуль. Скорее всего тебе надо два объекта (или может два потока). Ну а вопрос 1 - это действительно читайте книжки по паскалю.


StasVashuk   (2003-10-07 10:33:00) [3]

Какой ты добрый и весёлый.
Кто нибудь умнее, ответьте на мои вопросы пожалуйста


Плохиш_   (2003-10-06 16:49:00) [4]


> Вопрос №1

Шли бы Вы, батенька, книжки читать


> Вопрос №2

Сделать два модуля A и ответ на вопрос 1


Наверх

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