Перевод символов в верхний регистр


procedure DoFilter; const nOptions = 2; Options : Array [1..nOptions] of OptionRec = ( (OptionChar : "i"; Option : otFilename; Filename : ""), (OptionChar : "o"; Option : otFilename; Filename : "") );
var cRslt : Boolean; iRec : pOptionRec; oRec : pOptionRec; InputFile : Text; OutputFile : Text; c : char; begin cRslt := CmdLine.ProcessCommandLine (@Options, nOptions);
if (not cRslt) then Halt; { Убедимся в том, что были заданы имена входного и выходного файлов } iRec := CmdLine.GetOptionRec (@Options, nOptions, "i");
if (iRec^.Filename = "") then begin WriteLn ("Error: input file expected");
Halt; end; oRec := CmdLine.GetOptionRec (@Options, nOptions, "o");
if (oRec^.Filename = "") then begin WriteLn ("Error: output file expected");
Halt; end; { Открываем входной файл - без проверки ошибок} Assign (InputFile, iRec^.Filename);
Reset (InputFile);
{ Создаем выходной файл - без проверки ошибок} Assign (OutputFile, oRec^.Filename);
Rewrite (OutputFile);
{ Читаем и преобразуем каждый символ } while (not Eof (InputFile)) do begin Read (InputFile, c);
c := UpCase (c);
Write (OutputFile, c);
end; Close (InputFile);
Close (OutputFile);
end;

У данной версии программы FILTER есть два недостатка. Во-первых, она еле ползает - словно змея, пробуждающаяся от зимней спячки. Если у вас найдется мегабайтовый текстовый файл и несколько свободных минут, убедитесь сами. Во-вторых, она работает только с текстовыми файлами. Для одноразового приложения сойдет и так, но мы пишем шаблон для различных

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

Класс TFilterFile из листинга 1.8 предназначен для организации быстрых побайтовых операций с файлами в программах-фильтрах. Он инкапсулирует все детали буферизации и по возможности избавляет программиста от необходимости помнить о многочисленных житейских проблемах работы с файлами (вам остается лишь вызвать Open и Close).



Содержание раздела