![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 19.02.2012
Сообщений: 4
|
![]()
Пытаюсь автоматизировать некий процесс в делфи, и столкнулся с проблемой что иде дельфовая не воспринимает некоторые непечатаемые символы, т.е. рушит некий массив string.
Пользовался base64 для решения этого вопроса, но плохо то что бэйс увеличивает размер генерируемого массива string. Есть ли кодировки типа Base64, которые не увеличат размер генерируемого кода и чтобы кодированный массив был печатаемым? |
![]() |
![]() |
![]() |
#2 |
Регистрация: 19.02.2012
Сообщений: 4
|
![]()
нет идей?
слышал что есть модифицированная base64, называется base128. теоретически должна уменьшить размер выходного буфера, т.к. больше символов, и соответственно больше вариантов замены при кодировании... не попадалась ли кому эта самая base128? |
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
PetrowD, в общем случае ответ на ваш вопрос отрицательный - чудес НЕ БЫВАЕТ - для кодирования БОЛЬШЕГО числа символов МЕНЬШИМ алфавитом потребуется БОЛЬШЕ символов(знаков кодирования). Но в частном случае задача может быть решена. Тут всё ОЧЕНЬ сильно зависит от того, что за символы бывают на входе и какие символы недопустимы на выходе (т.е. что вы называете "массив был печатаемым"), так же важно соотношение допустимых и недопустимых символов... Как вариант можно попытаться предварительно сжать строку, а потом уже кодировать её (в тот же Base64). Так зачем Вам это всё? |
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 19.02.2012
Сообщений: 4
|
![]()
chr() уже рассматривался и был отколнен, как уже сказал Serge_Bliznykov из за 3х кратного увеличения выходного буфера.
Serge_Bliznykov попробуйте поксорить jpg или mp3 файл, и записать результат в виде массива строк в делфи, т.е. на уровне генерации исходного pas файла. Получим диапазон байт не пригодный для компилирования, задача в том чтобы не увеличивая или не сильно увеличивая размер выходного буфера заменить символы так, чтобы дельфовая среда приняла и скомпилила. Так зачем Вам это всё? Хочу реализовать свою давнюю идею, но уже практически на финальном шаге встал такой вопрос... Решил обратиться к обществу. |
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
а если так? взял свой пример программки BinToPas (писал на коленке, прошу не судить строго) Код:
Цитата:
И чем Вас ресурсные файлы не устраивают? (если уж так категорически нельзя во внешних файлах держать данные) Добавлено я взял mp3 размером 9502552 байта. закодировал. получил файл .INC размером 38 978 732 bytes (количество строк 722825) всё откомпилировалось... o_O ! Последний раз редактировалось Serge_Bliznykov; 21.02.2012 в 15:35. |
||
![]() |
![]() |
![]() |
#7 | ||
Регистрация: 19.02.2012
Сообщений: 4
|
![]() Цитата:
Ваш вариант превращения в массив байт увеличил файл с 800 кб в 2.7 мб, что вообщем то в более чем 3 раза больше оригинала, соответственно отпадает как вариант, хотя и он уже был ранее рассмотрен ![]() Цитата:
И так мне видится несколько возможных вариантов. 1. это паковать входной буфер, и далее бэйсом64 по нему. 2. на базе функций base32 и base64 сконструировать свою функцию base128, которая увеличит файл по моим подсчетам так, как меня устроит. Вопрос состоит в том, возможно кто-то уже реализовывал base128, чтобы не волосипедить заного ? |
||
![]() |
![]() |
![]() |
#8 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Это же только в ИСХОДНОМ коде. После компиляции получится тот же самый размер, что Вам нужен! Цитата:
Но я всё равно не понимаю, что Вы имеете в виду! Потому как, если даже использовать строку и так записать: Код:
|
||
![]() |
![]() |
![]() |
#9 | |
Экспериментатор
Форумчанин
Регистрация: 16.04.2008
Сообщений: 218
|
![]() Цитата:
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс
|
|
![]() |
![]() |
![]() |
#10 |
фрилансер
Форумчанин
Регистрация: 18.07.2008
Сообщений: 107
|
![]()
Кроме ресурсов можно еще напрямую присоединить к экзешнику любой файл и потом читать его прямо из экзешника.
Есть готовый код по присоединению/чтению, искать по сочетанию Delphi joiner
teleprog.net
teleprogramist@gmail.com |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вопрос по C++ | tema65 | Помощь студентам | 3 | 30.12.2011 13:58 |
Вопрос по mySQL + Вопрос по RichEdit | HTL | Общие вопросы Delphi | 4 | 01.01.2010 20:22 |
Соглашение о кодировании .NET | SunKnight | Общие вопросы .NET | 3 | 08.11.2009 19:01 |
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) | Albert2008 | Общие вопросы Delphi | 4 | 21.08.2008 15:33 |
вопрос по сокетам и общение как в ICQ.Сложный вопрос... | Руслантус | Общие вопросы C/C++ | 2 | 12.08.2008 21:10 |