Вопрос: Быстрый алгоритм сжатия | Добавлено: 02.04.11 22:41 |
Автор вопроса: ![]() |
Ответы | Всего ответов: 43 |
Номер ответа: 31 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #31 | Добавлено: 08.04.11 19:33 |
Сначала тестовые массивы вылетали на разжиме из-за размера исходящих данных. Сделал побольше - заработало. len+len/16+64+3 Этого не хватало...
Потом начал вылетать фиг знает из-за чего. Но мысли есть.. ![]()
|
Номер ответа: 32 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #32 | Добавлено: 08.04.11 20:38 |
Сори(65536 - 1), туплю...
Потом я подумал, что данные передаваемые по сети не корректно передаються, поэтому не декомпрессит. Но нет! проверил, сходитья каждый байт... Хз в чем косяк.. |
Номер ответа: 33 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #33 | Добавлено: 08.04.11 20:57 |
а как определяешь размер буфера для декомпрессии? мне во втором примере пришлось в .lzo файл в конец записывать размер оригинального файла, чтобы значть сколько памяти понадобится при расжатии |
Номер ответа: 34 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #34 | Добавлено: 08.04.11 21:00 |
len+len/16+64+3 - это только при сжатии. при декомпрессии нужен буфер, размер которого совпадает с размером начальных данных |
Номер ответа: 35 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #35 | Добавлено: 08.04.11 21:16 |
Для zlib, например, он такой был com_size = 1.01 * unc_size + 12
А для разжатия может быть какой угодно... Но я пытался и оригинальный размер ставить. Все равно вылетает... |
Номер ответа: 36 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #36 | Добавлено: 08.04.11 21:53 |
Не могу понять...
Сжимаю -> передаю -> проверяю -> пытаюсь разжать с исходным размером. 50 на 50 вылетает... т.е. Т.Е. то, во что я сжал и то, что пытаюсь разжать 100% идентично, но почти всегда программа вылетает... Иногда, все же, разжимает данные как нужно. |
Номер ответа: 37 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #37 | Добавлено: 08.04.11 21:54 |
а можно оригинал и сжатые данные выложить двумя файликами куда-нибудь? очень уж интересно, с чего оно вылетает |
Номер ответа: 38 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #38 | Добавлено: 08.04.11 22:00 |
http://xawp.narod.ru/test.zip |
Номер ответа: 39 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #39 | Добавлено: 08.04.11 22:07 |
Я в шоке! Теже данные отдельно нормально разжимаются... А в основном коде вылетает. Хотя проверка данных происходит после и до расжатия.... о_О |
Номер ответа: 40 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #40 | Добавлено: 08.04.11 22:20 |
Сделал задержку в виде msgbox'а - ничего не вылеает. Возможна какая-то функция не успевает завершиться и обращается к тем.же данным что отправляются на разжатие. Тогда все ок, буду смотреть где, что пересекается... |
Номер ответа: 41 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #41 | Добавлено: 08.04.11 22:35 |
Да, заработало. К этому массиву что-то обращалось в момент декомпрессии. |
Номер ответа: 42 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #42 | Добавлено: 08.04.11 23:01 |
полный мультитрединг что ли?) |
Номер ответа: 43 Автор ответа: ![]() ![]() ICQ: 345685652 Вопросов: 96 Ответов: 1212 |
Web-сайт: Профиль | Цитата | #43 | Добавлено: 09.04.11 00:04 |
Да в том-то и дело, что нет. Сокет данные присылает и они без очереди начинают обрабатываться.
Косяк еще в том, что сервер уже все отослал. - что он там еще досылает не понятно...))) Как-то не очень шустро работает(имею ввиду мое подобие радмина) - не больше 10 кадров выдает. Все на сетке ступориться, хотя локалка и буфер на 16Кб поставил, да еще и в два потока получаю... |
|