Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] Текстовые файлы


Автор: ISTka 30.11.2010, 19:29
Напишите процедуру
1.    AlignLeft(f), которая переформатирует файл f так, что все строки в нем будут выровнены по левому краю
2.    AlignRight(f), которая переформатирует файл f так, что все строки в нем будут выровнены по правому краю (ширина строки равна константе Width = 80)
3.    AlignCenter(f), которая переформатирует файл f так, что все строки в нем будут выровнены симметрично по центру (ширина строки равна константе Width = 80)
4.    Upper(f), которая переформатирует файл f так, что все строки в нем будут содержать только прописные (заглавные) буквы
5.    Lower(f), которая переформатирует файл f так, что все строки в нем будут содержать только строчные буквы
6.    SeekConstant(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы констант
7.    SeekVar(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы переменных

Можно сделать один любой вариант...

Автор: t_gran 1.12.2010, 06:59
ISTka, не буду повторно писать то что написал http://forum.vingrad.ru/forum/topic-316473/kw-pascal.html. Реализовал Upper(f):
Код

procedure Upper(fname: string);
const
   CBuffSize = 128;
type
   TBuff = array [1..CBuffSize] of char;

procedure SetUpper(var buff: TBuff; len: word);
var
   i: integer;
begin
   for i:= 1 to len do
      buff[i]:= upcase(buff[i]);
end;

var
   f: file;
   pos: longint;
   block: 1..CBuffSize;
   buff: TBuff;
begin
   assign(f, fname);
   {$I-}
   reset(f, 1);
   {$I+}

   if (ioresult <> 0) then
      exit;
   
   while (filepos(f) < filesize(f)) do
   begin
      pos:= filepos(f);
      if (filesize(f) - pos < CBuffSize) then
         block:= filesize(f) - pos
      else
         block:= CBuffSize;
   
      blockread(f, buff, block);
      
      SetUpper(buff, block);

      seek(f, pos);
      
      blockwrite(f, buff, block);
   end;

   close(f);
end;


Тестовый код с бинарником:

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)