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

Листинг 7. ПроцедураAttrib

3.8. Команда cls

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

procedure Cls;

begin

Coord.X := 0;

Coord.Y := 0;

FillConsoleOutputCharacter(ConHandle, ' ', MaxX * MaxY, Coord, NOAW);

GotoXY(0, 0);

end;

Листинг 8. Процедура cls

3.9. Команда sort

Осуществляет сортировку входных данных, ими могут быть как обычная строка введенная с клавиатуры, так и входной файл.

Алгоритм работы процедуры:

1. Если есть ключ справки выводим ее, возвращаемся на начало.

2. Извлекаем путь из строки, в зависимотси от результатов выполняем действия.

3. Определяем ключи.

4. Если нет пути то выводим введенный текст в зависимости от ключей.

5. Если есть путь или парамет то выводим его содержимое в зависимости от ключей.

6. Возвращаемся на начало.

Процедура приведена ниже:

if UpperCase(rg.Match[0]) = 'SORT ' then

begin

rg.Expression := '\/\?';

rg.Exec(tl);

if rg.Match[0] = '/?' then

begin

MyWriteln('SORT [STROKA]'

+#13#10+'Сортировка');

goto g1;

end

else

begin

rg.Expression := '[A-Za-z][:][ \\A-Za-z0-9]*[.A-Za-z0-9]+';

rg.Exec(tl);

if rg.Match[0] <> ''

then

begin

strList := TStringList.Create;

try

strList.LoadFromFile(rg.Match[0]);

except

MyWriteln('Запрашиваемый файл либо каталог не существует');

end;

strList.Sort;

if FindText_v1(' /R',UpperCase(tl))

then

begin

for i := strList.Count-1 downto 0 do

begin

MyWriteln(strList.strings[i]);

end;

end

else

begin

for i := 0 to strList.Count-1 do

begin

MyWriteln(strList.strings[i]);

end;

end;

strList.Free;

end

else

begin

rg.Expression := '[ ]+[ \\A-Za-z0-9]+[.A-Za-z0-9]+';

rg.Exec(trimleft(tl));

if rg.Match[0] <> ''

then

begin

rg2.Exec(rg.Match[0]);

if rg2.Match[0] <> ''

then

begin

strList := TStringList.Create;

try

help := Copy(curpath,1,length(curpath)-1);

if help[Length(help)] <> '\'

then help :=help + rg.Match[0]

else

begin

if trimleft(rg.Match[0][1]) <> '\'

then help :=help + trimleft(rg.Match[0])

else help :=copy(help,1,Length(help)-1) + trimleft(rg.Match[0]);

end;

strList.LoadFromFile(help);

except

MyWriteln('Запрашиваемый файл либо каталог не существует');

end;

strList.Sort;

if FindText_v1(' /R',UpperCase(tl))

then

begin

for i := strList.Count-1 downto 0 do

begin

MyWriteln(strList.strings[i]);

end;

end

else

begin

for i := 0 to strList.Count-1 do

begin

MyWriteln(strList.strings[i]);

end;

end;

strList.Free;

end

else

begin

if Length(Trim(tl)) > 4 then

begin

strList := TStringList.Create;

if FindText_v1(' /R',UpperCase(tl))

then

begin

help := StringReplace(UpperCase(tl),' /R','',[rfReplaceAll]);

help := StringReplace(uppercase(help),'SORT ','',[rfReplaceAll]);

help := StringReplace(help,' ','',[rfReplaceAll]);

for i := 1 to Length(help) do

begin

strList.Add(help[i]);

end;

help := '';

strList.Sort;

for i := strList.Count-1 downto 0 do

begin

MyWriteln(strList.strings[i]);

end;

end

else

begin

help := StringReplace(uppercase(tl),'SORT ','',[rfReplaceAll]);

help := StringReplace(help,' ','',[rfReplaceAll]);

for i := 1 to Length(help) do

begin

strList.Add(help[i]);

end;

help := '';

strList.Sort;

for i := 0 to strList.Count-1 do

begin

MyWriteln(strList.strings[i]);

end;

end;

strList.Free;

end

else

begin

MyWriteln('Не введено параметров для сортировки');

end;

end;

end;

end;

goto g1;

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