есть код программы сжатия файла по методу 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.