Приветствую Вас, Кирилл! Есть много книжек, хороших и разных :-)))
Ответ отправлен: 28.05.2003, 05:55 Отправитель: joe Отвечает vitya
Доброе время суток, Кирилл!
модуль состоит из интерфейсной и реализационной части. пишешь module A; interface ... implementation ... end; В части интерфейса описываешь те функции и структуры, которые потом будут видны с наружи. В реализационной части надо реализовать эти функции + можно написать дополнительные функции и структуры. Ответ отправлен: 26.05.2003, 15:14 Отправитель: vitya Отвечает DoS@
Приветствую Вас, Кирилл! Модуль (UNIT) в TURBO PASCAL - это особым образом оформленная биб- лиотека подпрограмм. Модуль в отличие от программы не может быть за- пущен на выполнение самостоятельно, он может только участвовать в построении программ и других модулей. Модули позволяют создавать личные библиотеки процедур и функций и строить программы практически любого размера. Модуль в TURBO PASCAL представляет собой отдельно хранимую и неза- висимо компилируемую программную единицу. В общем случае модуль - это совокупность программных ресурсов, предназначенных для использования другими программами. Под программ- ными ресурсами понимаются любые элементы языка TURBO PASCAL: констан- ты, типы, переменные, подпрограммы. Модуль сам по себе не является выполняемой программой, его элементы используются другими программны- ми единицами. Все программные элементы
модуля можно разбить на две части: программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне моду- ля; программные элементы, необходимые только для работы самого моду- ля, их называют невидимыми или скрытыми. В соответствии с этим модуль, кроме заголовка, содержит две основ- ные части, называемые интерфейсом и реализацией. В общем случае модуль имеет следующую структуру: unit <имя модуля>; {заголовок модуля} interface { описание видимых программных элементов модуля } { описание скрытых программных элементов модуля } begin { операторы инициализации элементов модуля } end. В частном случае модуль может не содержать части реализации и час- ти инициализации, тогда структура модуля будет такой: unit <имя модуля>; {заголовок модуля}
interface { описание видимых программных элементов модуля } implementation end. Использование в модулях процедур и функций имеет свои особенности. Заголовок подпрограммы содержит все сведения, необходимые для ее вы- зова: имя, перечень и тип параметров, тип результата для функций, эта информация должна быть доступна для других программ и модулей. С дру- гой стороны, текст подпрограммы, реализующий ее алгоритм, другими программами и модулями не может быть использован. Поэтому заголовок процедур и функций помещают в интерфейсную часть модуля, а текст - в часть реализации. Интерфейсная часть модуля содержит только видимые (доступные для других программ и модулей) заголовки процедур и функций (без служеб- ного слова forward). Полный текст процедуры или функции помещают в часть реализации, причем заголовок может не содержать список формаль- ных параметров. Исходный
текст модуля должен быть откомпилирован с помощью дирек- тивы Make подменю Compile и записан на диск. Результатом компиляции модуля является файл с расширением .TPU (Turbo Pascal Unit). Основное имя модуля берется из заголовка модуля. Для подключения модуля к программе необходимо указать его имя в разделе описания модулей, например: uses CRT, Graph; В том случае, если имена переменных в интерфейсной части модуля и в программе, использующей этот модуль, совпадают, обращение будет происходить к переменной, описанной в программе. Для обращения к пе- ременной, описанной в модуле, необходимо применить составное имя, состоящее из имени модуля и имени переменной, разделенных точкой. Например, пусть имеется модуль, в котором описана переменная К: unit M; interface var K: Integer; implementation ................. end. Пусть программа, использующая
этот модуль, также содержит перемен- ную К: Program P; uses M; var K: Char; begin ............. end. Для того, чтобы в программе P иметь доступ к переменной K из моду- ля M, необходимо задать составное имя M.K. Использование составных имен применяется не только к именам пере- менных, а ко всем именам, описанным в интерфейсной части модуля. Рекурсивное использование модулей запрещено. Если в модуле имеется раздел инициализации, то операторы из этого раздела будут выполнены перед началом выполнения программы, в которой используется этот модуль.
Ответ отправлен: 26.05.2003, 15:18 Отправитель: DoS@ Отвечает [MozgC]
Я буду краток =) http://pl42.narod.ru/article/pascal/article3.htm Хотя прочитав то, что по этой ссылке, мой ответ покажется тебе самым длинным и подробным =) Ответ отправлен: 26.05.2003, 15:21 Отправитель: [MozgC] Отвечает Ayl
Здравствуйте, Кирилл! Модуль содержит описание констант, типов, процедур, функций и переменныхпредназначенных для использования в программах и других модулях. Модуль состоит из 2-х частей - интерфейсной, содержащей описания, видимые вне модуля (публичные), и реализации (implementation), содержащей тела процедур и функций, описанных в интерфейсной секции, а также локальных для данного модуля. Кроме этого допускается включение инициализирующей части (отрабатывает один раз перед первой командой основной программы). Исходный тескт модуля MyUnit должен сохраняться в файле с именем myunit.pas (или любое другое расширение, например, .int). После сборки на диске создается файл с именем myunit.tpu. В Приложении - скелет модуля.
Приложение: Ответ отправлен: 26.05.2003, 15:34 Отправитель: Ayl Отвечает Shurik
Добрый день, Кирилл! Unit имя модуля; INTERFACE {описание переменных и функций: только названия и переменные внутри} IMPLEMENTATION {их содержание полностью с описанием} end.
Ответ отправлен: 26.05.2003, 15:37 Отправитель: Shurik Отвечает baldr
Здравствуйте, Кирилл! Создаешь файл myunit1.pas. В нем пишешь: Unit myunit1; interface Function Func1:Boolean; implementation Function Func1:Boolean; Begin Func1=True; End; end.
И все в таком же духе. Короче, в разделе interface ты пишешь заголовки всех функций, которые могут вызываться из программы. А в разделе implementation - эти самые функции и их тела. А в проге своей ты пишешь в разделе uses: Uses MyUnit1; И дальше можешь вызывать те функции, которые описаны в interface. Ответ отправлен: 26.05.2003, 16:15 Отправитель: baldr Отвечает Bill
Добрый день, Кирилл! 1) В программе, в которой хочешь использовать что-то из модуля, пишешь USES UMYMOD; 2) В новом окне пишешь: UNIT uMyMod; interface implementation begin end. и сохраняешь файл с именем UMYMOD.PAS. 3) Все, что описано в разделе между INTERFACE и IMPLEMENTATION - все равно, что описано в основной праграмме (та, которая USES): CONST, VAR, TYPE, FUNCTION, PROCEDURE. 4) НО! В разделе INTERFACE пишутся только заголовки процедур и функций. Только объявляется, что есть такие, какие парамеры им пережаются, какие результаты они возвращают. 5) КАК РЕАЛИЗУЮТСЯ эти функции и процедуры описывается в разделе РЕАЛИЗЦИЙ, то есть между IMPLEMENTION и BEGIN (begin может отсутствовать). 6) Можно определять переменные, константы, подпрограммы и в IMPLEMENTATION, но основная программа их не видит. 7) Исполняемый раздел между BEGIN
и END. будет выполнен один раз, когда программа при загрузке в оперативую память "прочитает" USES ... Есть еще особенности, но для начала этого хватит. См. Пример:
Приложение: Ответ отправлен: 26.05.2003, 17:35 Отправитель: Bill Отвечает Tancho
Доброе время суток, Кирилл! 1)Модуль(UNIT)обезательно содержить : Unit <имя модуля>; модуль похож на програму, он представляеть программный фрагмент, которой можно компилировать отдельно; 2)Он включаеть интерфейсную часть(interface) в каторой описываеться декларации променлив и функции, доступный для других программ, как и часть содержащая их код, у его входять есчо локалние переменныйи процедур реализирующие функции модулья; 3)После компилации исходный файл имееть рассширения TPU; Смотри пример модулья в Приложение !
Приложение: Ответ отправлен: 26.05.2003, 18:11 Отправитель: Tancho Отвечает BOLT
Приветствую Вас, Кирилл! Вот синтаксис: unit identifier; { Голова юнита} interface { Публичные объявления, т.е. котрые будет использовать вызывающая программа }: uses { Подключаемые модули } const { Объявляние констант } type { Объявляние типов } var { Объявляние переменных } procedure { Описание процедур } function { Описание функций } implementation { Реализация процедур и функций }: uses { Подключаемые модули} label { Метки } const { Описание констант } type { Описание типов } var { Описание переменных } procedure { Описание приватных процедур, т.е. вызывающая программа не может их исползовать} function { Описание приватных функций } begin { Реализация процедур и функций } statement;
{ процедура/функция } statement { рефлизация, т.е. сам код} end. Вот и все! Счастливо! Ответ отправлен: 26.05.2003, 18:54 Отправитель: BOLT Отвечает Tigran K. Kalaidjian
Здравствуйте, Кирилл! unit name; interface тут лежит описание переменных и процедур, доступных вызывающей программе. implementation описание внутренних процедур, переменных, модулей и пр.(вызывающей программе не видны) тела процедур и ф-ций. begin инициализационная часть. выполняется при инициализации модуля в головной программе. end. Вот и всё. Если будут вопросы - пиши. Ответ отправлен: 26.05.2003, 21:13 Отправитель: Tigran K. Kalaidjian Отвечает Pin
Добрый день, Кирилл! Файл: <имя модуля>.PAS Unit <имя модуля> interface Заголовки публичных функций и переменных implementation Реализация функций end. Использование USES <имя модуля>
Ответ отправлен: 27.05.2003, 23:53 Отправитель: Pin
Вопрос № 251
Дорогие эксперты!! Если прога написана в TP7.0,что нужно менять что бы компильнуть ее в Турбо паскале for Windows или в делфи и вообще возможно ли это. Спасибо за помощь.
В BP for Windows по-моему меняются библиотеки,типа CRT на WinCRT и т.д., насчет Delphi,на 100% не уверен, может он и компильнет какнить досовский вариант, но даже если и так, то получится то же самое, что и если бы ты компильнул исходник в TP 7.0, если же ты думаешь просто вставить код из досовского варианта в Delphi, то это возможно только, если там какие-то просто вычисления, если же что-то хоть чуть-чуть связано с выводом на экран, то там уже все по-другому, у меня такое ощущение, что ты Delphi ни разу в глаза не видел и поэтому спрашиваешь =) Ладно, удачи. Ответ отправлен: 26.05.2003, 20:11 Отправитель: [MozgC] Отвечает Tancho
Доброе время суток, антон! Да возможно : 1)Для компилирования под Turbo Pascal for Windows, надо менять некоторый библиотек(uses) - например Crt на WinCrt, Dos на WinDos и т.д., а для автоматического закрытия окно Приложение и выход в Windows(после завершение выполнимое задание) в конце прогу надо вставить DoneWinCrt; Смотри Приложение! 2) Прогу написана в TP7.0 можно компилировать через Delphi после вызова компилатора как конзолное приложение (Start/run...),а предварительно в сорс код прогу надо вставить директиву - {$APPTYPE CONSOLE}; Смотри второй маленький пример Приложении!
Приложение: Ответ отправлен: 27.05.2003, 10:57 Отправитель: Tancho Отвечает joe
Здравствуйте, антон! В дельфях её можно будет только в качестве модуля вставить или исполнять собственно текст прокгаммы в обработчике какого-нибудь события. Либо можно сделать из него консольное приложение, но это надо поподробнее изучить ещё Ответ отправлен: 27.05.2003, 11:44 Отправитель: joe Отвечает BOLT
Приветствую Вас, антон! Конечно возможно!Ведь все эти СР используют один язык алгоритмического программирования - Pascal.В Delphi выбираешь тип разрабатываемого приложения - "Console", но учти, что консольные приложения в Delphi 32-разрядно адресуют память и работают с 32-разрядными регистрами, т.е. в DOS'е они уже не смогут работать.В Pascal'е for Windows можно вибирать между 16(работает в DOS'е) и 32-разрядными приложениями. Если же ты используешь библиотеки(юниты) характерные для DOS'а(например: overlay.tpu, dos.tpu и т.д.), то тут код должен быть адоптирован для Windows, т.е. использовать анологичные модули, которые корректно будут работать в Windows. Счастливо! Ответ отправлен: 27.05.2003, 14:51 Отправитель: BOLT Отвечает _vt
Здравствуйте, антон! Если она написана только с использованием стандартных библиотек (system,dos) и ориентирована на текстовый режим, то вполне должна откомпилироваться и как консольное Windows-приложение. Но при этом некоторые процедуры могут быть не реализованы под Windows или заменены на другие. А специфичные процедуры работы с ОС надо переписать самому.
Ответ отправлен: 27.05.2003, 19:09 Отправитель: _vt Отвечает Bill
Здравствуйте, антон! Лучше делай в Delphi: 1) создай консольное приложение New -> ..(в зависимости от версии).. -> Console Application; 2) вставляй код копированием и .... УЧТИ, что "там" нет никаких CRT, и кодировка ANSI 3) вывод из этого: пиши на Delphi. Даже консольное приложение (то есть, для DOS) предоставляет очень большие возможности для программиста. Паскаль стал намного умнее 4)УДАЧИ!!! Ответ отправлен: 28.05.2003, 10:54 Отправитель: Bill
Вопрос № 252
Всем здарова. Я знаю, что вопрос может показаться глупым, но я программировании как боксер в математике, а в институте задали сделать небольшую защиту паролем для моей программы, может кто скажет как это можно сделать ? Я просто вообще не врубаюсь...
Вот небольшой ламерский примерчик =) var userkey, rightkey : string[5]; begin rightkey:='EDCBA'; writeln('Vvedite password: '); readln(userkey); if userkey<>rightkey then writeln('Password is incorrect!'); end.
Ответ отправлен: 26.05.2003, 20:45 Отправитель: [MozgC] Отвечает DoS@
Приветствую Вас, XORXOR! Ну смотри примерчик!
Приложение: Ответ отправлен: 26.05.2003, 21:13 Отправитель: DoS@ Отвечает chiv
Приветствую Вас, XORXOR! Ну ты хоть рассказал чё за прога такая и её код тоже не помешалбы. Ответ отправлен: 27.05.2003, 02:47 Отправитель: chiv Отвечает Дима Мусиенко
Приветствую Вас, XORXOR! Если не сложную, то: 1) Просишь пользователя ввести пароль 2) Сравниваешь с правильным паролем (храниться он может где угодно) 3) Дальше твои действия, если правильный, то..., иначе... Ответ отправлен: 27.05.2003, 10:49 Отправитель: Дима Мусиенко Отвечает BOLT
Приветствую Вас, XORXOR! Если защиту от пользователя, то это просто см приложение, а если от хакера, то Pascal тебе не поможет - здесь нужен великий Assembler. Program enter_password; VAR password:string; BEGIN write('Введите пароль для доступа: '); readln(password); while password <> '1234' do {пароль как ты догадался "1234"} begin writeln('Доступ запрещен!Пароль неверный.Введите еще раз: '); readln(password); end; writeln('Доступ к программе разрешен!'); readln; END.
Счастливо! Ответ отправлен: 27.05.2003, 15:27 Отправитель: BOLT Отвечает Tancho
Здравствуйте, XORXOR! Ну ничего сложного, Исчешь пароль и потом сравняеш с то что заложил как пароль если ДА выполняеш сущинская часть прогу - иначе даешь что парол грешная и снова просиш ввод парол! Смотри приложение!
Приложение: Ответ отправлен: 27.05.2003, 15:29 Отправитель: Tancho Отвечает Tigran K. Kalaidjian
Доброе время суток, XORXOR! Под Дос, насколько я понял... Принимаем строку и сравниваем с паролем =) Напимер: const parol='kuku'; var str1: string; begin readln(str1); if str1<>parol then halt else writeln('OK!'); end. Ответ отправлен: 27.05.2003, 18:01 Отправитель: Tigran K. Kalaidjian Отвечает Bill
Добрый день, XORXOR! Вот пример:
Приложение: Ответ отправлен: 27.05.2003, 19:48 Отправитель: Bill
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.