169 похожих чатов

Program Project1; uses Classes, zlib; var fs,cs: TStream; s:

array[0..5] of byte = (1,2,3,4,5,6);
begin
fs:=TFileStream.Create('test.txt',fmCreate);
cs:=TZCompressionStream.Create(clfastest, fs);
fs.Write(s[0], Length(s));
cs.Free;
fs.Free;
end.

test.txt:
78 01 03 00 00 00 00 01

💁‍♂️🤷‍♂️🤔

Подозреваю, что это нормально(такой вывод в файле)....
А как сделать чтобы я мог и сырые данные писать и сжатые в один стрим? (каждый раз создавать-разрушать CompressionStream?)
А куда, кстати, ушли сырые байты? Их что CompressionStream перехватил?

Это Delphi, если что

6 ответов

23 просмотра

Чет у тебя не сжалось вообще, а наоборот)

notme- Автор вопроса
Hemul GM
Чет у тебя не сжалось вообще, а наоборот)

ну я и пишу в стрим, который без сжатия.... а вот этот выхлоп (сам для себя решил, без лазанья в код), что это заголовки какие-то

notme- Автор вопроса
notme
ну я и пишу в стрим, который без сжатия.... а вот ...

в общем... на FPC я до этого так делал: 1. Пишу данные(заголовок) сырых данных, в обычный FileStream 2. Потом пишу в CompressionStream основные данные для сжатия Когда нужно - расжимал всё обратно и сверял с заголовком И это - работало. Теперь решил данные после сжатого стрима хранить... и вот чёто тут не пошло, ни в FPC ни в Delphi Смотря на HEX вывода два вопроса возникает: 1. CompressionStream - он что перехватывает вывод в связанный FileStream, даже если я пишу в сам FileStream? 2. CompressionStream - формирует какой-то заголовок(эпилог?) в конце стрима?

notme- Автор вопроса
notme
в общем... на FPC я до этого так делал: 1. Пишу да...

Отвечаю на свои вопросы сам: 1. В Delphi TCompressionStream игнорит смещение, пишет с начала (может это как-то можно зарегулировать, но с ходу не нашёл) 2. При освобождении объекта TCompressionStream - пишет ещё какие-то данные(заголовок(эпилог?)) - можно ли это отключить? Не знаю, может контрольная сумма или что это... или служебные данные...

notme
Отвечаю на свои вопросы сам: 1. В Delphi TCompress...

классы разные, даже названия. совсем не факт что они должны и будут одинаково работать

notme- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта