Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 149
от 30.05.2003, 04:50

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 258
Отправлено ответов: 877
Активность: 339.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

joe
Статус: Доверительный
Общий рейтинг: 124.41
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.03
[Подробней >>]
DoS@
Статус: Доверительный
Общий рейтинг: 129.5
[Подробней >>]
 
[MozgC]
Статус: Опытный
Общий рейтинг: 186.31
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 119.15
[Подробней >>]
Shurik
Статус: Доверительный
Общий рейтинг: 120.76
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 112.48
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Bill
Статус: Доверительный
Общий рейтинг: 178.57
[Подробней >>]
Tancho
Статус: Опытный
Общий рейтинг: 151.32
[Подробней >>]
 
BOLT
Статус: Опытный
Общий рейтинг: 166.48
URL: В помощь начинающему программитсу Assembler, C/C++
[Подробней >>]
Tigran K. Kalaidjian
Статус: Опытный
Общий рейтинг: 117.49
URL: Методы оптимизации работы ПК
[Подробней >>]
Pin
Статус: Опытный
Общий рейтинг: 120.77
URL: My HOMEPAGE
[Подробней >>]
 
_vt
Статус: Доверительный
Общий рейтинг: 119.29
[Подробней >>]
chiv
Статус: Доверительный
Общий рейтинг: 107.43
[Подробней >>]
Дима Мусиенко
Статус: Доверительный
Общий рейтинг: 110.76
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 250. Захотелось написать модуль! Опишите пожалуйста основные принципы составления!... (ответов: 12)
Вопрос № 251. Дорогие эксперты!! Если прога написана в TP7.0,что нужно менять что бы компильнуть ее в Турбо паскал... (ответов: 6)
Вопрос № 252. Всем здарова. Я знаю, что вопрос может показаться глупым, но я программировании как боксер в математ... (ответов: 8)

Вопросов: 3, ответов: 26


 Вопрос № 250

Захотелось написать модуль! Опишите пожалуйста основные принципы составления!



Вопрос отправлен: 26.05.2003, 15:08
Отправитель: Кирилл

[Следующий вопрос >>] [Список вопросов]

Отвечает joe

Приветствую Вас, Кирилл!
Есть много книжек, хороших и разных :-)))


Ответ отправлен: 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 или в делфи и
вообще возможно ли это.
Спасибо за помощь.



Вопрос отправлен: 26.05.2003, 19:59
Отправитель: антон (oven_mars@rambler.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает [MozgC]

В 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

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



Вопрос отправлен: 26.05.2003, 20:28
Отправитель: XORXOR

[Следующий вопрос >>] [Список вопросов]

Отвечает [MozgC]

Вот небольшой ламерский примерчик =)
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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (41)
C / C++ (31)
Perl (5)
Builder / Delphi (15)
Pascal (28)
Basic / VBA (12)
Java / JavaScript (11)
PHP (7)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (30)
"Железо" (28)
Поиск информации (14)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (10)
Юристу
Гражданское право (5)
Семейное право (2)
Трудовое право (3)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное