Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TURBO_PASCAL.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
8.23 Mб
Скачать

Глава 14. Специальные средства языка

В этой главе рассматриваются специальные средства языка: функции опроса командной строки, низкоуровневые средства и обработка фатальных ошибок. Применение низкоуровневых, т.е. более присущих языкам ассемблера, процедур и функций, таких как Move и FillChar, позволяет значительно упростить и ускорить выполнение программ. Здесь же рассмотрены вопросы безопасности применения таких процедур, и кратко представлены средства самого низкого уровня — вставки машинных кодов.

Более детально описан способ организации обработок ошибок, возникающих при работе программ, написанных на Турбо Паскале.

14.1. Работа с командной строкой. Функции ParamCount и ParamStr

Функции ParamCount и ParamStr необходимы для работы самостоятельных программ (ЕХЕ-файлов) с параметрами командной строки. Под последними понимается набор параметров, разделенных пробелами (реже знаками табуляции), который стоит после имени запускаемого файла в строке MS-DOS, например:

первый параметр

┌──┴──┐

C:\> format a: /S

└──┬──┘ └──┬──┘

имя выполняемого файла второй параметр

Сам по себе параметр может содержать все что угодно, кроме пробелов и табуляций. Правда, можно видеть, что некоторые утилиты требуют разделять параметры знаками типа «/» или «-». Они не являются разделителями по правилам MS-DOS, и программа сама должна разбираться, сколько параметров заложено в конструкциях типа /a/c/e/z/x или -a-g-c.

Если после имени файла в командной строке MS-DOS пусто, то ParamCount возвращает значение 0, в противном случае — число параметров в строке, разделенных пробелами или табуляцией. Это можно использовать для остановки программ, которым при запуске не были переданы параметры-аргументы (рис. 14.1). {295}

PROGRAM Uses_Parameters; { программа MyProg.pas }

...

BEGIN { начало основного блока }

if ParamCount=0 then

begin { параметры отсутствуют }

WriteLn;

Write ( 'Запуск программы: '#10 );

WriteLn( 'MyProg Параметр1 [ Параметр2 ]' );

WriteLn; Halt

end;

{ . . . выполнение программы . . . }

END.

Рис. 14.1

После того как определено количество параметров, можно выбрать любой из них, используя функцию ParamStr( N ), возвращающую в виде строки параметр номер N. Пусть запуск программы имеет вид

имя программы

┌──┴──┐

C:\TURBO\PAS> Myprog abc /z /c/d 123

└────┬────┘ └────┬────┘

приглашение MS-DOS параметры

В этом примере ParamCount вернула бы значение 4, a ParamStr имела бы такие значения типа String:

N

ParamStr(N)

0

‘C:\TURBO\PAS\MYPROG.EXE’

1

‘abc’

2

‘z’

3

‘/c/d’

4

‘123’

5 и более

‘ ‘

Отметим два момента: во-первых, имеет смысл (всегда!) вызов ParamStr (0), возвращающий полное имя запущенной программы; во-вторых, цифры в строке параметров будут трактоваться как строка, а не как число, и их надо будет преобразовывать процедурой Val. {296}

При запуске из среды программирования ParamStr (0) вернет полное имя файла TURBO.EXE (с указанием пути к нему).

Чтобы обеспечить удобство пользования и «дружелюбность» программы, надо делать так, чтобы при отсутствии параметров при запуске программа начинала спрашивать их с экрана. Это легко сделать с помощью рассмотренных функций. Пусть, например, программа запрашивает имя файла данных, и если пользователь не вводит его, принимает некое значение имени по умолчанию. Тогда алгоритм может выглядеть так, как показано на рис 14.2.

{ Пример программы, принимающей имя файла }

VAR

s : String;

BEGIN { начало основного блока }

if ParamCount>0 { есть ли параметры? }

then s:=ParamStr(1) {да }

else begin {нет }

Write( 'Введите имя файла [DEFAULT.DAT] ' );

ReadLn( s );

if s=' ' then s:='DEFAULT.DAT'

end;

{ ... ВЫПОЛНЕНИЕ ПРОГРАММЫ — обработка файла s ... }

END.

Рис. 14.2

При отладке программ в среде Турбо Паскаль, где нет командной строки MS-DOS, можно передать программе параметры через команду Parameters в меню системных команд Options.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]