chisloposled:={trunc(kolelementovfila/trunc(ln(kolelementovfila)))+1}5;
Interval:={trunc(kolelementovfila/chisloposled)+1}5;
kolmetok:=trunc(Interval)-1;
SetLength(granica,kolmetok);
metca:=0;
for i:=0 to kolmetok-1 do
begin
granica[i]:=i;
end;
i:=0;
j:=0;
nomer:=0;
// кодирование
while J<=kolmetok-1 do
begin
massivelementov1[j,i]:=massivelementov[nomer]-trunc(granica[j])*150;
nomer:=nomer+1;
i:=i+1;
if i=chisloposled then
begin
{nomer:=0;}
J:=J+1;
i:=0;
end;
end;
closefile(f);
if fsave.Execute then
begin
AssignFile(outf,fsave.filename+'.arhi');
Rewrite(outf);
outpos:=0;
for i:=0 to kolmetok-1 do
for j:=0 to Interval-1 do
begin
tmp:=chr(granica[i]);
write(outf,tmp);
inc(outpos);
seek(outf,outpos);
outcomb:=dec24tobin24(massivelementov1[i,j]);
for k:=1 to 3 do
outbuf[k]:=chr(bin24todec24(copy(outcomb,k*8-7,8)));
for k:=1 to 3 do
begin
write(outf,outbuf[k]);
inc(outpos);
seek(outf,outpos);
end;
end;
CloseFile(outf);
end;
end;
end;
procedure TMain.Button2Click(Sender: TObject);
var inf: file of char;
outf:textfile;
inbuf:array[1..3] of char;
temp:string;
k:integer;
inpos:integer;
tmp:char;
massive,chislo,granica:integer;
begin
fopen.Filter:='Архивированные файлы | *.arhi';
fsave.Filter:='Текстовые файлы | *.txt';
if fopen.execute and fsave.execute then
begin
AssignFile(inf,fopen.Filename);
Reset(inf);
inpos:=0;
AssignFile(outf,fsave.Filename);
Rewrite(outf);
inpos:=0;
while not(eof(inf)) do
begin
read(inf,tmp);
inc(inpos);
Seek(inf,inpos);
granica:=ord(tmp);
for k:=1 to 3 do
begin
read(inf,inbuf[k]);
inc(inpos);
Seek(inf,inpos);
end;
temp:='';
for k:=1 to 3 do
temp:=temp+dectobin(ord(inbuf[k]));
massive:=bin24todec24(temp);
chislo:=massive+granica*150;
write(outf,inttostr(chislo),' ');
end;
closefile(outf);
closefile(inf);
end;
end;
end.
Приложение Б
Руководство пользователя
Для начала пользователь должен предварительно подготовить текстовый файл исходных данных (*.txt), в котором должен находиться массив чисел.
После за пуска программы(KiZI.ехе) на экране появится панель на которой находится три кнопки:
· Архивация
· Деархивация
· Выход
При нажатии кнопки «Архивация» появится окно «Открыть файл для архивации», где пользователю предложено выбрать текстовый файл с входными данными, если пользователем в файл с входными данными будет записан другой символ кроме числа, то программа выдаст ошибку: «Файл содержит буквенный символ. Указать другой файл?»
· при нажатии кнопки «Yes» пользователю будет предложено выбрать другой файл;
· при нажатии кнопки «No» пользователь будет возвращен в начальное меню;
Если файл, выбранный пользователем содержит корректные входные данные (числа), то программа предложит пользователю окно «Сохранить заархивированный файл», где пользователю нужно только выбрать папку куда файл нужно сохранить и ввести имя файла, расширение программа добавит сама (*.arhi). В этот файл программа запишет заархивированную информацию.
При нажатии кнопки «Деархивация» появится окно «Открыть файл для архивации», где пользователю предложено выбрать архивный файл, затем пользователю программа предложит окно «Сохранить заархивированный файл», где пользователю нужно выбрать только папку, куда нужно сохранить файл и ввести имя файла, расширение программа добавит сама (*.txt). В этот файл программа запишет разархивированную информацию.
При нажатии кнопки «Выход» программа заканчивает свою работу и происходит выход в операционную систему.
Программа производит сжатие информации примерно на 14%.