паскаль, pascal, turbo pascal, borland pascal, TP, BP функции паскаль, pascal массивы, процедуры паскаль pascal программирование, pascal 7.0, pascal 6.0, pascal 5.0
Rambler's Top100


Итак сегодня мы продолжим разговор о константах. Первый раз мы с ними столкнулись в теперь уже далёком выпуске #08 - давненько это было. Однако нам необходимо вернуться к теме констант. Там ведь не всё так просто, как могло показаться с первого раза... Оказывается (вот так сюрприз :))) константа может иметь тип (такого подвоха вы не ожидали?)... такие константы называются типизированными. Полное объявление констант выглядит так:

имя : тип = значение
Например,
name : string = 'Вася Пупкин';
x : real = 0.123;
days : 1..31 = 1;
Ну это было просто. Гораздо интереснее использовать чего-нить более сложное. Например константы-массивы. Для задания значения необходимо написать их в круглых скобках () через запятую:
someconst : array [1..5] of byte = (0, 1, 2, 3, 4);
Для масивов типа char есть очередная халява. Два следующих объявления идеентичны:
a1 : array [0..9] of char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
a2 : array [0..9] of char = '0123456789';
Но иногда может понадобится создать константу -запись. Что ж не проблемма. Для значений полей используется список из последовательности вида имя поля, двоеточие и константа. Например:
point = record
x, y : real;
end;
const
p1 : point = (x : 0; y : 12);
Поля должны указываться в той последовательности, в какой они перечислены в определении типа. Если в записи есть поле файлового типа, то такая запись не может быть константой. Константы множества задаются с помощью конструктора множества:
type
day = set of 1 .. 31;
const
someday : day = [1..5, 8, 10];
Вот вообщем и всё про константы. Так же сегодня по просьбе одного из чиателей я раскажу об запуске внешних программ. Иногда просто необходимо перед (или даже во время) исполнения вашей запустить другую. Например ну лениво вам писать текстовый редактор, а надо что б в программе можно было отредактировать файл - пожалуйста запускайте любой внешний! Для этого надо использовать процедуру exec из модуля Dos.
procedure Exec(Path, Cmdline: string);
Процедура получает две строки: Path - путь и имя файла с программой и Cmdline - командная строка. Однако не всё так просто, как хотелось бы. Использование этй процедуры имеет некоторые особенности. Во первых вызывающая программа остаётся в памяти, поэтому она не должна съесть всю доступную память. Объём памяти для программы можно установить здеся Options -> Memory Sizes. По умолчанию вся доступная память отводится вашей программе, поэтому внешней программе будет некуда грузиться :( Так же размеры памяти можно установить с помощью директивы $M, которая имеет следующий формат:
{$M stack, low, hight}
где stack - размер стека, low - нижняя граница динамической памяти, hight - верхняя граница. Все размеры указываются в байтах. Особенности исполнения программ на Паскале так же требует изменения некоторых стандартных векторов прерываний. К ним относятся:
00h 02h 18h 23h 24h 34h 35h 36h 37h 38h 39h 3Ah 3Bh 3Ch 3Dh 3Eh 3Fh 75h
Начальные значения хранятся в переменных SaveIntXX (где XX - номер прерывания в Hex виде). Поэтому перед вызовом внешней программы и после него рекомендуется вызывать процедуру SwapVectors, которая обменивает содержимое векторов прерываний и перечисленных перменных. Вот и все. Теперь рассмотрим пример

{$M 1024, 0, 0}
uses Dos;

begin
  writeLn ('переходим в режим командной строки');
  writeLn (' для выхода в программу введите exit');
  SwapVectors;
  Exec (GetEnv ('COMSPEC'), '');
  SwapVectors;
  writeLn ('наша программа завершена')
end.

Я не стал придумывать ничего свехъестественного и запустил командный процессор command.com. Для получения имени файла я использовал функцию GetEnv

function GetEnv(EnvVar: string): string;
которая возвращает значение переменной среды. Для того что бы увидеть все возможные переменные напишем такую программу:

 uses Dos;

 var I: Integer;
 begin
   for I := 1 to EnvCount do
      Writeln(EnvStr(I));
 end.

Посмотрите что выведет на экран эта программа. И увидите, что у значение параметра COMSPEC - это путь к файлу command.com. В этой програмке я использовал соответственно функции

function EnvCount: Integer;
возвращает число переменных ДОС. И функцией
function EnvStr(Index: Integer): string;
Которая возвращает строку типа Name = Value, где Name - имя переменной, Value - значение. Так вот вызов Exec (GetEnv ('COMSPEC'), '') - означает, что мы вызвали command.com без параметров, а значит просто появится командная строка с которой можно будет работать. Например так:

переходим в режим командной строки
 для выхода в программу введите exit


Microsoft(R) Windows 98
   (C)Copyright Microsoft Corp 1981-1999.

D:\>E:

E:\>cd bp

E:\BP>bla-bla
Имя команды или файла указано неправильно

E:\BP>exit
наша программа завершена
Вот в очередной раз и всё.




программирование на Паскале, Pascal, BP, TP, BorlandPascal, TurboPascal turbo pascal 7.0, borland pascal 7.0, языки программирования, pascal учебник
Рад приветствовать! =) Начнем мы с истории данного сайта. Изначально он разрабатывался как типично авторский проект, не неся в себе особых целей. Я лишь хотел освоить азы html верстки и опробывать свои силы в разработке web-сайтов. Тематика "программирование на Паскале" была выбрана не случайно, до этого я долго изучал этот ЯП и всё это вылилось в написание собственного самоучителя по Паскалю. Сейчас это всё вспоминается с некоторой долей иронии и улыбкой на лице. В нынешнее время я полностью занимаюсь web-разработками и отошел от прикладного программирования, но данный проект решил всё же не забрасывать и вдохнуть в него новую жизнь, освежив дизайн и контент.

С уважением, Евгений Злобин
турбо-паскаль скачать, файлы паскаль, бесплтано скачать pascal