MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Разработка программы сжатия и восстановления файлов с помощью фиксированного блочного кода постоянного смещения

Название:Разработка программы сжатия и восстановления файлов с помощью фиксированного блочного кода постоянного смещения
Просмотров:127
Раздел:Информатика, программирование
Ссылка:Скачать(42 KB)
Описание: Содержание Краткое описание работы программы Код программы Результаты тестирования приложения Краткое описание работы программы   Используемые компоненты среды Delphi: 1.  SaveDialog, OpenDialog. Копом

Университетская электронная библиотека.
www.infoliolib.info

Часть полного текста документа:

Содержание

Краткое описание работы программы

Код программы

Результаты тестирования приложения


Краткое описание работы программы

 

Используемые компоненты среды Delphi:

1.  SaveDialog, OpenDialog. Копомненты необходимые для чтения и сохранения файлов, а так же получения названия файла и его пути до него.

2.  Button - компонент кнопка.

3.  ListBox - компонент, состоящий из строк, хранит кодовые слова.

4.  ProgressBar - компонент, необходимый для отслеживания этапов выполнения программы.

5.  Label - компонент для вывода строковых данных.

Краткое описание работы приложения:

1.  При нажатии кнопки Button1 “Считать для сжатия” происходит получение имени считываемого файла и пути до него. Измеряется размер файла (функция FileSize). Полностью очищаются Label.

2.  При нажатии кнопки Button2 “Проверить” происходит обнуление всех необходимых для работы переменных. Запускается процесс считывания (по-байтово) и анализа сжимаемого файла, в результате которого высчитывается средняя длинна кодового слова. Она необходима для определения возможности сжатия. В зависимости от полученного результата выводится сообщение о том, что файл можно сжимать, в противном случае, что нельзя. Так же формируется массив частот повторений символов в файле, необходимый для соотнесения кодовых слов и символов в файле.

3.  При нажатии Button3 “Сжать” происходит побайтовое считывание сжимаемого файла с помощью команды BlockRead. Далее происходит соотнесение считанного байта кодовому слову. Алгоритм соотнесения основан на частоте появлений символов в файле. Чем чаще данный символ встречается в файле, тем меньшей длинны ему присваивается кодовое слово. Запись нового файла производится с помощью команды BlockWrite так же по-байтово. Новому файлу присваивается новое расширение. Когда файл полностью считан, выполняется проверка на наличие оставшихся битов. Если таковые имеются, то пустое пространство забивается нулями до тех пор, пока количество битов не будет равно 8.

4.  При нажатии Button4 “Считать для восстановления” происходит получение имени сжатого файла, пути до него.

5.  При нажатии Button5 “Восстановить" происходит побайтового считывание файла. Алгоритм разжатия состоит из двух этапов. На первом этапе происходит считывание файла блоками размером в 1 байт. Производится запись считанных байтов в специальную переменную. Когда длина переменной составляет 16 символов или более, начинается анализ считанной информации. Производится проверка на соответствие кодовым словам и последующая запись полученных значений в новый файл. На втором этапе производится проверка на остаток и удаление лишних данных (случай, когда было выполнено дополнение нулями при сжатии).

Код программы:

 

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls;

type

TForm1 = class (TForm)

ListBox1: TListBox;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label1: TLabel;

ProgressBar1: TProgressBar;

Button4: TButton;

Button5: TButton;

Label3: TLabel;

Label4: TLabel;

Label2: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

SaveDialog2: TSaveDialog;

OpenDialog2: TOpenDialog;

procedure Button1Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

f,f1,f2,f3: file;

buff: byte;

conR,conW: string;

a: array [0.255] of real; // массив вероятностей

word: array [0.255] of string; // массив кодовых слов

l: array [0.255] of byte; // массив длин кодовых слов

e: array [0.255] of real; // массив номеров элементов

inf: array [0.255] of integer; // массив служебной информации

i,j,k,size,prog,buff1,buff3,check,dop: integer;

sl,sum,sort,sort1,buff2: real;

implementation

{$R *.dfm}

procedure TForm1.Button1Click (Sender: TObject);

begin

if OpenDialog1.Execute then

AssignFile (f,OpenDialog1.FileName); // считываем имя файла и путь до него

Reset (f,1); // открываем файл для чтения и изменения

size: =FileSize (f); // измеряем размер файла

Label4.Caption: =IntToStr (size) + ' байт';

// выводим размер файла в Label4

Label2.Caption: ='';

Label6.Caption: ='';

Label8.Caption: ='';

end;

procedure TForm1.Button2Click (Sender: TObject);

begin

ProgressBar1.Position: =0; // обнуляем ProgressBar

prog: =0; // обнуляем счетчик для Progress Bar

sl: =0; // обнуляем переменную средней длинны

sum: =0; // обнуляем счетчик повторений символов

sort: =0; // обнуляем переменные для сортировки массива номеров элементов

sort1: =0;

buff: =0;

for i: =0 to 255 do

begin

e [i]: =i; // производим обнуление элементов массивов кодовых слов, длин кодовых слов, вероятностей и номеров элементов.

l [i]: =0;

word [i]: ='';

a [i]: =0;

end;

while not EOF (f) do // считываем файл до его окончания

begin

BlockRead (f,buff,1); // считываем блоки в 1 байт

a [buff]: =a [buff] +1; // записываем этот байт в массив

prog: =prog+1;

ProgressBar1.Position: =round ( (prog/size) *100);

end;

for i: =0 to 255 do

begin

word [i]: =ListBox1. ............





Нет комментариев.



Оставить комментарий:

Ваше Имя:
Email:
Антибот:  
Ваш комментарий:  
 
     

Вечно с вами © MaterStudiorum.ru