Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2024, 14:25   #11
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,673
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Чтобы передать по ссылке, без дублирования
PChar это и так ссылка:
Код:
PChar               = ^Char;
Arigato вне форума Ответить с цитированием
Старый 20.05.2024, 15:03   #12
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Потому что вообще желательно как-то сделать так, чтобы итоговое сжатие не вышло меньше места, которое будет потрачено на архиватор=))
С этим лучше к доктору. Он диагноз поставит, таблеточки пропишет, отож. Я редко пишу такое, обычно стараюсь в конструктив, но тут явно клинический случай.

Если цель — поучиться алгоритмам сжатия по словарю — вначале изучается теория, потом пишутся некие тесты-лабы. Цели оптимизации кода к сжатию не ставится. Вообще, сжатие данных — одна из тематик, в которую без серьезной теоретической постановки лучше не соваться.

Если же цель — реализовать нестандартное сжатие «как в играх» — должна быть некая внешняя постановка, почему так делается. Обычно — затруднить модификацию ресурсов игры. Цели оптимизации кода к сжатию опять же не ставится.

Так что вы определитесь: или крестик снимите, или трусы наденьте. В текущем же виде тема будет лишь поводом для насмешек. Похожая тема с неверной постановкой задачи (читать с начала, если непонятно).
Vapaamies вне форума Ответить с цитированием
Старый 21.05.2024, 21:33   #13
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,839
По умолчанию

ну, есть мысля.
если тексты написаны по-русски, то это коды кириллических символов от 128 до 255 без латиницы от "А" до "я".
а попробуй сделать замены кодов: новый_код = 255 - (код_символа). получатся коды символы в диапазоне от 127 до 0. а это уже проще шифровать - меньше места. и тут используй как раз те самые коды непечатаемых символов...
а при дешифровке будешь опять же вычитать из 255 код и получишь обратно свой текст
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 21.05.2024, 22:05   #14
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,647
По умолчанию

Так ему же не дешифровка, а сжатие занадобилось - а как этим вычитанием сожмёшь? Вместо 8 бит 7? Невелико приобретение, а мороки...
digitalis вне форума Ответить с цитированием
Старый 21.05.2024, 23:52   #15
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,673
По умолчанию

Можно еще некоторые буквы со схожим начертанием объединить, привязав их к одному коду. К примеру, русская буква "А" и английская "A" выглядят одинаково. Вот уже освободили один код
Arigato вне форума Ответить с цитированием
Старый 03.06.2024, 12:32   #16
firemen
Новичок
Джуниор
 
Регистрация: 09.04.2010
Сообщений: 1
По умолчанию

Код:
uses
  System.ZLib;

{$R *.dfm}

function CompressText(const Text: string): TBytes;
begin
  try
    result:= ZCompressStr(Text);
  finally

  end;
end;

function DecompressText(const CompressedData: TBytes): string;
begin
  result:= ZDecompressStr(CompressedData);
end;

procedure TForm12.Button1Click(Sender: TObject);

var
  Text: string;
  CompressedData: TBytes;
  DecompressedText: string;
begin

  Text := '1234567890123456789012345678901234567890123456789012345678901234567890';

  CompressedData := CompressText(Text);

  edit1.Text:= TEncoding.Default.GetString(CompressedData);

  DecompressedText := DecompressText(CompressedData);

  edit2.Text:= DecompressedText;


end;
firemen вне форума Ответить с цитированием
Старый 28.10.2024, 01:13   #17
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 662
По умолчанию

Идея с использованием неиспользуемых кодов как популярные пары символов дала сжатие текста примерно на 30-35%

То есть, например, #1 не используется, а пара 'ка' встречается часто - сделать так чтобы #1 означал 'ка'

Количество пар смог расширить до 89, потому что, помимо 1-31, в середине таблицы море символов, которые не используются в нормальных текстах

Последний раз редактировалось Kronos913; 28.10.2024 в 01:16.
Kronos913 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать матрицу А[20, 2], заполнив первый столбец случайными числами из диапазона от 99 до 999, а во второй столбец записать 1, если число простое, 0 - если не простое tara-ta-ta Паскаль, Turbo Pascal, PascalABC.NET 2 11.11.2019 20:05
k-е простое daniil123 Паскаль, Turbo Pascal, PascalABC.NET 0 14.12.2011 23:52
Сжатие текста (по типу доков) IvaniuS Помощь студентам 2 13.04.2010 22:41
Простое или нет Superlotles Общие вопросы C/C++ 7 13.03.2010 20:30