![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 10.08.2012
Сообщений: 84
|
![]()
И ещё один вопрос
Как сжать строку? Хоть каким-нибудь образом? Проблема в том, что строка может содержать все символы, от #0 до #255. Все строки, опять же, длиной 48 символов. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
вообще-то, вопрос интересный..
Но непонятно, почему Вы не пробовали гуглить, например... Да и зачем Вам сжимать строку - неясно.. Ну так, навскидку, возмите алгоритм сжатия LZW |
![]() |
![]() |
![]() |
#3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Сжать до чего?
I'm learning to live...
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Не, ну сжать набор строк куда не шло. Но поскольку у вас по сути двоичные данные, то они достаточно плохо сжатию поддаются. А уж 48-байтная строка после сжатия скорее длиннее станет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 10.08.2012
Сообщений: 84
|
![]()
Сжать до чего? Уменьшить размер
Тут возникла другая проблема. При записи в файл данные искажаются. Массив строк поочерёдно записываю в файл (for i:=1 to 4800 do writeln(f,st[i]) и также считываю (for i:=1 to 4800 do readln(f,st[i]). Данные до и после не сходятся. тут уже и сжатие не поможет Последний раз редактировалось DelhiProgramer; 05.11.2012 в 18:15. |
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Стесняюсь спросить а чего TStringList не используешь?
I'm learning to live...
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
тс, может читать как бинарные данные просто?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 10.08.2012
Сообщений: 84
|
![]()
Со StringList-ом похоже та же ерунда
Видимо, не получается записывать нулевые символы (#0). А может там случайно где-нибудь выходит комбинация #13#10 и тогда он делает новую строку |
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ОМГ.
Цитата:
для всего остального есть такая "волшебная" штука - TFileStream. Он работает с бинарным потоком, ему глубоко всё равно, что у Вас там внутри - нулевые байты, не нулевые, переводы строки, табуляции, символы забоя и т.д. и т.п. Используйте его для записи/чтения своих файлов! p.s. тема скатывается в явный оффтоп! Запись/чтение файла явно никакого отношения не имеют к сжатию строки! |
|
![]() |
![]() |
![]() |
#10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
На всякий случай скажу что в DXE есть хорошая библиотечка по сжатию - zLib в стандартной поставке.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сжатие изображений | brain22 | Мультимедиа в Delphi | 1 | 06.06.2012 20:25 |
сжатие строки(написать cgi скрипт) | marianna14 | Помощь студентам | 0 | 27.03.2011 20:25 |
Описать функцию CompressStr(S) строкового типа,выполняющую сжатие строки S | Allen Iverson | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 23.04.2009 01:07 |
Сжатие битмапа | Rapid | Мультимедиа в Delphi | 7 | 08.12.2007 16:38 |
Проверка на сжатие | vitalik007 | Общие вопросы Delphi | 3 | 20.08.2007 10:53 |