У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


буфер

fout.WriteBuffer(res,4);

o:=o+dhdr^.blw;

end;

end;

 

Зміщення на позицію 0

ftmp.Seek(0,sofrombeginning);

Зміщення на позицію 14

fout.Seek(14,sofrombeginning);

присвоєння res розміру файлу

res:=fout.Size;

Запис в буфер

fout.WriteBuffer(res,4);

Зміщення на позицію fout.Size

fout.Seek(fout.Size,sofrombeginning);

Процес копіювання

fout.CopyFrom(ftmp,ftmp.Size);

очистка змінної

ftmp.Free;

Зв’язок змінної f з файлом Buldozer.tmp

system.AssignFile(f,'Buldozer.tmp');

try

Стирає файли пов’язані з f

system.Erase(f);

except

end;

except

Очистка змінної

ftmp.Free;

Зв’язок змінної f з файлом Buldozer.tmp

system.AssignFile(f,'Buldozer.tmp');

try

Стирає файли пов’язані з f

system.Erase(f);

except

end;

Виведення повідомлення про наявність помилки

application.MessageBox('Не вдалось створити вихідний файл. Архівація проводитись не буде', 'Помилка');

Очистка пям’яті

freemem(ps,dhdr^.blw*dhdr^.blh);

freemem(pd,dhdr^.blw*dhdr^.blh*2);

freemem(dhdr,sz);

Не виконання функції pack

pack:=false;

exit;

end;

end;

Очистка пям’яті

freemem(ps,dhdr^.blw*dhdr^.blh);

freemem(pd,dhdr^.blw*dhdr^.blh);

freemem(dhdr,sz);

Не виконання функції pack

pack:=true;

end;

end.

В цій процедурі спочатку зчитується заголовок BMP-файлу. Наступним кроком перевіряється чи є вірним тип файлу BMP. Далі відбувається перевірка чи 256-колірний файл.

Якщо ці умови задоволені, зчитуються ширина та довжина блоку, що містяться в змінних w і h. Далі визначається кількість блоків по координатах x та y. Кількість блоків по осі абсцис буде міститись в змінній blx, а по осі ординат в змінній bly.

Далі відбувається корекція розміру рисунку за допомогою множення знайдених кількостей блоків на відповідні параметри.

dhdr^.header.bi.biWidth:=blx*blw;

dhdr^.header.bi.biHeight:=bly*blh;

dhdr^.header.fh.bfSize:=blx*blw*bly*blh+dhdr^.header.fh.bfOffBits;

end;

Наступним кроком створюється тимчасовий файл «Buldozer.tmp», формується BMP-заголовок і відбувається його запис в файл.

Далі виконується функція compress4(ps,pd,k), результат якої присвоюється змінній res.

Після цього отримані результати записуються у файл Buldozer.tmp. Якщо не вдалось зберегти тоді запуститься процедура application.MessageBox('Не вдалось створити вихідний файл. Архівація проводитись не буде', 'Помилка').

Розглянемо детальніше функцію compress4(buf,res:pointer;n:cardinal).

function compress4(buf,res:pointer;n:cardinal):integer;

var

endbuf: Pchar;

begin

screen.cursor:=crhourglass;

endbuf:=buf;

endbuf:=endbuf+n;

asm

mov esi,buf

mov edi,res

@again:

@sdiff:

mov ecx,255

mov ebx,esi // beg of kus

push edi

mov edi,esi

inc edi // edi=esi+1

repne cmpsb // different // [esi]<>[esi+1]

lahf // save zf // zf=0 -> not found equals

not cl

dec cl

pop edi // res

jecxz @nodiff

mov al,0

stosb

mov al,cl

stosb

mov esi,ebx

rep movsb // copy differents [esi](buf)->[edi](res)

cmp esi,endbuf

jae @finita

sahf // restore zf

jnz @sdiff

jmp @ssame

@nodiff:

dec esi

@ssame:

mov ecx,255

mov ebx,esi // beg of kus

lodsb // 1st in kus

xchg esi,edi // scas in edi (buf)

repe scasb // same // [edi]=ax

lahf // save zf // zf=1 -> not found differents

xchg esi,edi // stos to edi (res)

not cl

mov al,cl

stosb

sub esi,2

movsb // copy last same

cmp esi,endbuf

jae @finita

sahf

jz @ssame

cmp esi,endbuf

jb @again

@finita:

sub edi, res

mov n,edi

end;

screen.cursor:=crarrow;

compress4:=n;

end;

В даній програмі використано лише один з двох розглянутих вище методів стиснення даних Compress2. В результаті виконання даної функції у файл буде записано значення nll, значення символу і кількість повторів однакових символів.

2.5 Демонстрація роботи програми

Тепер продемонструємо роботу програми. Для запуску програми запускаємо Buldozer.exe. Програма містить дві основні форми.

Форма, яка появилася складається з таких частин:

блок вибору жорсткого диску та директорії, де знаходиться файл перед початком стискання;

блок вибору файлу, який потрібно стиснути;

блок запуску процесу стискання.

Крок 1. Вибираємо диск і директорію, де знаходиться файл, який треба стиснути.

Крок 2. Вибираємо файл, який треба стиснути (рисунок 2.6).

Рисунок 2.6 – Загальний вигляд вікна програми

Крок 3. Натискаємо кнопку «Виконати». Після цього появляється нове вікно Form2 «Параметри архівування» (рисунок 2.7).

Рисунок 2.7 – Вигляд вікна «Параметри архівування»

Крок 4. Натискаємо кнопку «Конвертувати». Після цього появляється нове вікно Form2 «Параметри архівування» (рисунок 2.7). В цьому вікні вказуємо ширину і висоту блоку. По замовчуванню і висота, і ширина дорівнюють 800. В результаті отримаємо файл з розширенням *.tmp в тій директорії, що і початковий файл. Цей файл нам і треба було отримати.

Якщо ж ми вказали невірні параметри початкового файлу, а саме: висоту або ширину; відкриваємо пошкоджений файл; файл невірного формату; файл не 256-колірний, тоді отримаємо повідомлення про нашу помилку (рисунок 2.8 і рисунок 2.9).

 

Рисунок 2.8 - Реакція програми на файл, який є не 256-колірним

Рисунок 2.9 - Реакція програми на файл невірного формату

3 РОЗРАХУНОК НАДІЙНОСТІ ПРОГРАМНОГО

ЗАБЕЗПЕЧЕННЯ

Надійність програмного забезпечення визначається з однієї сторони, відсутністю відмов, збоїв, помилок в її роботі, з іншої сторони - можливістю швидкого відновлення апаратури і обчислювального процесу. Поняття надійності виникло через необхідність оцінки степені довіри до системи, її здатності працювати необхідний час з встановленою якістю.

Програмне забезпечення характеризується випадковим характером помилок та випадковим характером комбінацій вхідних даних, що викликає їх появу і дає можливість говорити про системні відкази, що викликані помилками програмного забезпечення, як про випадкові події. Це дозволяє використати для їх аналізу ті ж методи, що і для аналізу апаратних відмов. Тим не менше, відмови, викликані помилками програмного забезпечення, мають достатньо суттєві відмінні риси, що обумовило створення спеціальних методів аналізу надійності програмного забезпечення .

Джерелом помилок програмного забезпечення є логічні помилки в проекті чи його недосконалість, неправильне кодування, помилки при компонуванні.

Повна перевірка програми на наявність в ній помилок можлива лише після об’єднання її частин, коли зміни і виправлення в програмі пов’язані із значними затратами часу і засобів. Крім того, якщо в програмі використовуються блоки, які були складені раніше, то це значно ускладнює вдосконалення даної програми. Можливі також ситуації, коли безпомилково працююча програма, що застосовується до нової задачі і на інших вихідних даних, дає неприйнятні по точності і часу обрахунку результати. Крім вище перерахованих є ще ряд факторів, що призводять до появи помилок у програмі.

По складності програми можна поділити на декілька типів. Довжина стандартних програм для обчислення елементарних функцій не перевищує сотні команд. Ці програми перевіряються дуже ретельно, але іноді в них виявляються помилки, звичайно при специфічних значеннях аргумента.

Щоб застосувати до оцінки надійності програм математичний аппарат, розглядають відмови програми – події, що містяться в переході до неправильної роботи програми. Після появи відказу програмісти досліджують програму з


Сторінки: 1 2 3 4 5 6 7 8 9 10 11 12 13 14