|
Программируем по-русски
|
Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку. Издатель Глагола
|
(*~\Глагол\Отделы\Обмен~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*) (**) ОТДЕЛ Параметр; (*============================================================================* * НАЗНАЧЕНИЕ: работа с параметрами запуска приложения * *----------------------------------------------------------------------------* * Этот отдел предлагает средства для доступа к командной строке, которая * * была передана программе при запуске. Имеется возможность обращаться к ней * * как целиком, так и к каждому параметру по отдельности. * * При этом подразумевается, что параметры разделяются в командной строке * * пробелами, запятыми или и тем, и другим вместе. Параметры, которые должны * * содержать пробелы или запятые, должны заключаться в кавычки. * *============================================================================*) ИСПОЛЬЗУЕТ ОС, Цепь ИЗ "..\Иное\"; ПОСТ ДлСтроки-=300; (* максимальная длина всей командной строки *) Запас-=30; (* наибольшее число параметров *) ПЕР строка-:ЦЕПЬ[ДлСтроки]; всего-:ЦЕЛ; список:РЯД Запас ИЗ ДОСТУП К ЦЕПЬ; (******************************************************************************) ЗАДАЧА Текст-(номер:ЦЕЛ; текст+:ЦЕПЬ); (* Параметр под номером <номер> переписывается в <текст>. * Если выбран несуществующий параметр, то возвращает пустую цепочку. *) УКАЗ ЕСЛИ (номер < 0) ИЛИ (номер >= всего) ТО текст[0]:=0X ИНАЧЕ ЕСЛИ список[номер] # ПУСТО ТО СПИСАТЬ(список[номер]^,текст) ИНАЧЕ текст[0]:=0X КОН КОН КОН Текст; (******************************************************************************) ЗАДАЧА Подготовить; (* ASCIIZ ком. строка разбивается на отдельные параметры. *) ПЕР поз,н,к:ЦЕЛ; УКАЗ ОС.ПолучитьКомСтроку(строка); поз:=0; ПОКА поз < Запас ВЫП список[поз]:=ПУСТО; УВЕЛИЧИТЬ(поз) КОН; всего:=0; поз:=0; ПОКА всего < Запас ВЫП ПОКА (строка[поз]=" ") И (строка[поз] # 0X) ВЫП УВЕЛИЧИТЬ(поз) КОН; ЕСЛИ строка[поз]=0X ТО ВОЗВРАТ КОН; н:=поз; ПОКА (строка[поз] # 0X) И (строка[поз] # ",") И (строка[поз] # " ") И (строка[поз] # '"') И (строка[поз] # "'") ВЫП УВЕЛИЧИТЬ(поз) КОН; ЕСЛИ строка[поз]="'" ТО УВЕЛИЧИТЬ(поз); ПОКА (строка[поз] # 0X) И (строка[поз] # "'") ВЫП УВЕЛИЧИТЬ(поз) КОН АЕСЛИ строка[поз]='"' ТО УВЕЛИЧИТЬ(поз); ПОКА (строка[поз] # 0X) И (строка[поз] # '"') ВЫП УВЕЛИЧИТЬ(поз) КОН КОН; к:=поз-1; ЕСЛИ (строка[н]="'") ИЛИ (строка[н]='"') ТО УВЕЛИЧИТЬ(н); ЕСЛИ (строка[поз]="'") ИЛИ (строка[поз]='"') ТО УВЕЛИЧИТЬ(поз) КОН КОН; СОЗДАТЬ(список[всего],к-н+2); Цепь.Часть(строка,список[всего]^,н,к-н+1); ПОКА строка[поз]=" " ВЫП УВЕЛИЧИТЬ(поз) КОН; ЕСЛИ строка[поз]="," ТО УВЕЛИЧИТЬ(поз) КОН; УВЕЛИЧИТЬ(всего) КОН КОН Подготовить; (******************************************************************************) УКАЗ Подготовить КОН Параметр. |
▲ Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com
|
|