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

Передача аргументов из командной строки

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

Однако в языке Pascal нет нарушений единообразия: любая программа тоже способна получать аргументы во время начала работы. Для этого нужно лишь вызывать ее из командной строки следующим образом:

<имя_программы> <список_аргументов>

Список аргументов - это последовательность передаваемых в программу значений, разделенных пробелами или символами табуляции.

В стандартном модуле System, автоматически подключаемом к любой программе на языке Pascal, имеются две функции, позволяющие программе принимать аргументы, переданные из командной строки.

Функция paramcount: word возвращает количество аргументов, переданных в программу из командной строки при вызове.

Функция paramstr(k: word): string возвращает k-й аргумент, переданный в программу из командной строки.

Если программа модульная, то обработку поступающих из командной строки аргументов удобнее всего занести в секцию инициализации одного из модулей. Впрочем, это не обязательно.

Например:

program arguments;

var i,k,n: word;

begin

n:= paramcount;

writeln('Из командной строки поступило ',n,'

аргументов:');

for i:= 1 to n do

writeln(i,'-й аргумент = ',paramstr(i));

end.

Если теперь вызвать эту программу из командной строки, скажем, с такими аргументами:

arguments abcd -36 +25.062 -t /&

то на экране получится следующий результат:

Из командной строки поступило 5 аргументов:

1-й аргумент = abcd

2-й аргумент = -36

3-й аргумент = +25.062

4-й аргумент = -t

5-й аргумент = /&

Хорошим стилем считается включать в программу так называемый внешний help: если в нее можно передавать какие-либо аргументы из командной строки, необходимо сообщить потенциальному пользователю их возможные значения и смысл.

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

Примером может служить краткая экранная подсказка хорошо известного архиватора arj.exe, которая появляется на экране в случае некорректного обращения к этой программе. Подсказка сообщает пользователю: а) имя программы; б) суть того, что именно появилось на экране; в) правила корректного вызова программы; г) примеры корректного вызова; д) краткий список возможных аргументов (команд и ключей).

ARJ 2.50a SHAREWARE Copyright (c) 1990-95 ARJ Software. Dec 12 1995

List of frequently used commands and switches. Type ARJ -? for more help.

Usage: ARJ <command> [-<sw> [-<sw>...]] <archive_name> [<file_names>...]

Examples: ARJ a -e archive, ARJ e archive, ARJ l archive *.doc

<Commands>

a: Add files to archive m: Move files to archive

d: Delete files from archive t: Test integrity of archive

e: Extract files from archive u: Update files to archive

f: Freshen files in archive v: Verbosely list contents of archive

l: List contents of archive x: eXtract files with full pathname

<Switches>

c: skip time-stamp Check r: Recurse subdirectories

e: Exclude paths from names s: set archive time-Stamp to newest

f: Freshen existing files u: Update files (new and newer)

g: Garble with password v: enable multiple Volumes

i: with no progress Indicator w: assign Work directory

m: with Method 0, 1, 2, 3, 4 x: eXclude selected files

n: only New files (not exist) y: assume Yes on all queries