TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Ссылки на описания модуля 

             Как только вы включили модуль в свою программу, все констан-
        ты,  типы данных,  переменные,  процедуры и функции,  описанные в
        секции интерфейса этого модуля,  становятся доступными для  вашей
        программы. Например, допустим, имеется следующий модуль:

             unit MyStuff;
             interface
               const
                 MyValue = 915;
               type
                 MyStars = (Deneb,Antares,Betelgeuse);
               var
                 MyWord : string[20];

               procedure SetMyWord(Star : MyStars);
               function TheAnswer : integer;
               implementation
                 .
                 .
                 .
               end.

             Как можно видеть здесь в интерфейсной части модуля, та часть
        модуля, которая находится в интерфейсной секции, является видимой
        для вашей программы (и может ею использоваться).  С учетом  этого
        можно написать следующую программу:

             program TestStuff;
             uses MyStuff;
             var
               I     : integer;
               AStar : MyStars;
             begin
               Writeln(myValue);
               AStar := Deneb;
               SetMyWord(AStar);
               Writeln(MyWord);
               I := TheAnswer;
     Writeln(I)
             end.

             После включения в программу оператора uses MyStuff вы можете
        ссылаться на все идентификаторы,  описанные в интерфейсной секции
        модуля МyStuff (МyWord,  МyValue и так далее). Однако, рассмотрим
        следующую ситуацию:

             program TestStuff;
             uses MyStuff;
             const
               MyValue = 22;
             var
               I     : integer;
               AStar : MyStars;

               function TheAnswer : integer;
               begin
                 TheAnswer := 1
               end;

             begin
               Writeln(myValue);
               AStar := Deneb;
               SetMyWord(AStar);
               Writeln(MyWord);
               I := TheAnswer;
               Writeln(I)
             end.

             В этой программе переопределяются некоторые из идентификато-
        ров,  описанных в МyStuff. Будучи скомпилированной и выполненной,
        эта программа  будет  использовать  собственные  определения  для
        МyValue и ТheAnswer,  поскольку они были описаны позднее, чем оп-
        ределения в МyStuff.

             Вероятно, вам интересно знать,  каким образом в такой ситуа-
        ции можно ссылаться на идентификаторы в МyStuff.  Для этого необ-
        ходимо перед каждым идентификатором помещать имя МyStuff с точкой
        (.). Например, рассмотрим еще одну версию этой программы:

             program TestStuff;
             uses MyStuff;
             const
               MyValue = 22;
             var
               I     : integer;
               AStar : MyStars;

               function TheAnswer : integer;
               begin
                 TheAnswer := 1
               end;


             begin
               Writeln(MyStuff.MyValue);
               AStar := Deneb;
               SetMyWord(AStar);
               Writeln(MyWord);
               I := MyStuff.TheAnswer
               Writeln(I)
             end.

             Эта третья программа даст такие же ответы, что и первая, да-
        же в том случае,  если вы переопределите MyValue и  TheAnswer.  В
        действительности вы  имели полное право написать первую программу
        следующим образом:

             program TestStuff;
             uses MyStuff;
             var
               I     : integer;
               AStar : MyStuff.MyStars;

             begin
               Writeln(MyStuff.MyValue);
               AStar := My.Stuff.Deneb;
               MyStuff.SetMyWord(AStar);
               Writeln(My.Stuff.MyWord);
               I := MyStuff.TheAnswer;
               Writeln(I)
             end.

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

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz