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

We use cookies. Read the Privacy and Cookie Policy

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

C:> format a: /S

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

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

- 296 -

| 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. Пусть запуск программы имеет вид

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

| N -- ParamStr(N)

| 0 -- 'C:TURBOPASMYPROG.EXE'

| 1 -- 'abc'

| 2 -- 'z'

| 3 -- '/c/d'

| 4 -- '123'

| 5 и более -- ' '

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

- 297 -

При запуске из среды программирования 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.