Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2012, 15:31   #1
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию откуда берется файл?

есть код программы сжатия файла по методу RLE. не могу понять, из какой директории необходимо брать файл
Код:
Program TI_laba1;
uses crt;

VAR File_In,File_Out:file of byte;

{========================================================================}
function Action:string;

VAR c:char;

  BEGIN
    repeat
      clrscr;
      writeln('                     выберите действие ');
      writeln;
      writeln('                               1-сжать файл');
      writeln('                              2 - восстановить файл');
      writeln('                              3 - выход');
      readln(c);
      case c of
        '1' : Action:='Compress';
        '2' : Action:='DeCompress';
        '3' : halt(0);
      end;
    until (c='1') or (c='2');
   clrscr;
  END;

{=======================================================================}
procedure Compress(f1,f2:string);     

VAR  count, b, value : byte;

BEGIN
 Assign(File_in,f1);   
  reset(File_in);
 Assign(File_out,f2);
  rewrite(File_out);
 read(File_in,value);  
 count:=1;  
 while not eof(File_in) do   
   begin
      read(File_in,b);  
     if (value<>b)or(count>=63)then  
       begin
        if (count=1)and(value<192) then 
         write(File_out,value) 
          else begin
            count:=count+192;  
            write(File_out, count, value); 
            count:=1; 
          end;
        value:=b;  
       end else inc(count);  
   end;
 count:=count+192;   
 write(File_out, count, value);  
 write(File_out, b);   
 close(File_in);       
 close(File_out);     
END;
{=======================================================================}
Procedure DeCompress(f1,f2:string);   
VAR b,count,i:byte;

BEGIN
 Assign(File_out,f2);
  rewrite(File_out);
 Assign(File_in,f1);
  reset(File_in);
 count:=0; 
 while not eof(File_in) do
   begin
    read(File_in,b); 
     if b>192 then 
      begin
       count:=b-192; 
       read(File_in,b);    
       for i:=1 to count do write(File_out,b); 
      end else write(File_out,b);   
   end;
 close(File_out);     
 close(File_in);      
END;

{======================================================================}
Procedure Result_1;   
var size:string;

BEGIN
  reset(File_in);
  reset(File_out);

  textcolor(10);
  str(FileSize(File_in),size);
  GoToXY(26,9);
  writeln('*размер исходного файла = ',size);

  str(FileSize(File_out),size);
  GoToXY(26,10);
  writeln(' размер сжатого файла = ',size);

  textcolor(14);
  str(FileSize(File_in)/FileSize(File_out):5:3,size);
  GoToXY(28,12);
  writeln('коэффициент сжатия = ',size);

  close(File_in);
  close(File_out)
END;

{======================================================================}
Procedure Result_2;
var size:string;

BEGIN
  reset(File_in);
  reset(File_out);

  textcolor(10);
  str(FileSize(File_in),size);
  GoToXY(26,9);
  writeln('размер сжатого файла* = ',size);

  str(FileSize(File_out),size);
  GoToXY(26,10);
  writeln('размер восстановленного файла* = ',size);

  close(File_in);
  close(File_out)
END;

{========================================================================}
procedure Start(act:string);

VAR Name1,Name2:string;      

  BEGIN                    
       writeln;
       write('введите имя входного файла* --> '); {вот здесь я не могу понять, каким образом находится файл и где он должен быть}
       readln(Name1);                            

       {$i-}               
       Assign(File_in,Name1);
       Reset(File_in) ;
       {$i+}
        if IOResult<>0 then
          begin
               writeln('файл не найден !');
               readkey;
               halt (0);
          end;
       write('введите имя входного файла* --> ');
       readln(Name2);

       Assign(File_out,Name2);
       rewrite(File_out);
       if Name1<>'' then   
         if act='Compress' then
           begin
             Compress(Name1,Name2);
             gotoXY(28,7);
             writeln('**!');
             Result_1;
           end
         else if act='DeCompress' then
           begin
             Decompress(Name1,Name2);
             gotoXY(28,7);
             writeln('введите имя выходного файла**!');
             Result_2;
           end;
  END;


BEGIN
     Start(Action);
     readkey;
END.
gylayko вне форума Ответить с цитированием
Старый 02.12.2012, 01:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
     writeln;
       write('введите имя входного файла* --> '); {вот здесь я не могу понять, каким образом находится файл и где он должен быть}
       readln(Name1);
следующую строчку после помеченной Вами видите?
Код:
readln(Name1);
в переменную Name1 считвается имя файла, которое вводят в программу (пользователь программу указывает имя файла и нажимает клавишу enter)

в связи с тем, что программа, похоже, написана на TurboPascal, значит ей доступны только файлы, указанные в формате 8.3 (т.н. DOS имена, они же "короткие" имена файлов).
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Откуда берется ошибка 207 (ошибочная операция с плавающей запятой) sysop999 Паскаль, Turbo Pascal, PascalABC.NET 1 01.06.2012 03:35
Не понимаю откуда? Droniwe Работа с сетью в Delphi 0 30.03.2012 22:38
Откуда нуль?? FrozenHurt Общие вопросы C/C++ 2 21.01.2012 22:04
ADO и Excel берется первая строка Tomatos БД в Delphi 3 17.02.2011 19:25
Откуда берется код в Access Plasticine Microsoft Office Access 9 20.04.2009 14:58