Смекни!
smekni.com

Методы сжатия цифровой информации Метод Лавинского (стр. 3 из 3)

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%.