IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> архивация
Client
сообщение 27.03.2011 14:01
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Привет!
решил сделать программку для архивации и... сейчас есть 2 проблемки:
1) начал считывать файл через blockread и получаю ошибку I/O 998. ошибка доступа, но почему? файл создался и в корне диска и в папке с проектом.
procedure TForm1.Button2Click(Sender: TObject);
var
f : file;
buf : array [0..255] of Char;
begin
AssignFile(f, 'D:\asd.bin');
Reset(f);
BlockRead(f, buf, 250); <-- тут вылазит ошибка sad.gif
Memo1.Text := buf;
CloseFile(f);
end;


2)пока до этого не дошел, но.. какой у меня будет выигрыш? Допустим, есть текстовый файл, я его прочитал, составил таблицу частот символов, построил дерево, а потом что? у меня получатся цепочки из 3-х бит и более, но как мне записать именно эти 3 бита а не байт целиком?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 27.03.2011 14:18
Сообщение #2


Гость






Следи за руками:
var
buf : array [0..255] of Char; // Хранилище на 250 байт
// ...
Reset(f); // Открыли файл. Дефолтный размер одного блока = 128 байт
BlockRead(f, buf, 250); // читаем 250 блоков = 32К. Что ты ожидаешь увидеть, кроме ошибки?


Цитата
у меня получатся цепочки из 3-х бит и более, но как мне записать именно эти 3 бита а не байт целиком?
Значит записывай эти 3 бита в буферный байт, потом следующие 3 бита, и так, пока не наберется 8 бит. Набралось - сбрасываешь буфер в файл, и продолжаешь... shl/shr + and/or в помощь...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 26.07.2025 13:57
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"