| 
| 
 | Вопрос # 5 812/ вопрос закрыт / | 
 |  Приветствую, уважаемые эксперты!
 Требуется создать архиватор, который по алгоритму хафмана будет сжимать файл. Проблема в том, что я не знаю как это всё осуществить. как это всё засунуть в файл.
 
 P.S. Вроде как то объяснил, но если что задавайте вопросы, отвечу.)
 
|  |   Вопрос задал: serox (статус: Посетитель)Вопрос отправлен: 12 декабря 2011, 22:20
 Состояние вопроса: закрыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 5; последнее сообщение — 14 декабря 2011, 17:00; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 13 декабря 2011, 08:23 [#1]:Ну, любой алгоритм сжатия подразумевает наличие входного и выходного набора данных. Само сохранение в файл к сжатию никакого отношения не имеет. В данном случае можно использовать TFileStream.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Ерёмин А.А. (статус: *Администратор), 13 декабря 2011, 10:52 [#2]:А Гуглом вам религия запрещает пользоваться? В сети полно исходников кодирования алгоритмом Хаффмана. |  
|   | serox (статус: Посетитель), 14 декабря 2011, 13:39 [#3]:Ерёмин А.А. Нашел только один, ито в нем мне месяц сидеть разбираться... Легче и полезней самому написать...
 
 А так возник вопрос, как перевести файл в бинарный код?
 That will be, you and do not learn, if never will try! ^__^ |  
|   | min@y™ (статус: Доктор наук), 14 декабря 2011, 13:53 [#4]: Цитата (serox): А так возник вопрос, как перевести файл в бинарный код?  Уточни, что должно быть на выходе. А то, ведь, вся инфа в цифровой технике и так хранится в бинарном коде.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | serox (статус: Посетитель), 14 декабря 2011, 17:00 [#5]:ну я предполагаю так сделать... 
 сначала делаем статистику
 
 var
  f: file;
  b: byte;
  q: real;
  a: array [0..255] of integer;
  i,FileS: integer;
begin
  for i:=0 to  255 do
    A[i]:=0;
  if OpenDialog1.Execute then begin
    Assignfile(f, OpenDialog1.FileName);
    Reset(f,1);
 
    FileS := FileSize(f);
    while not eof(f) do begin
      blockread(f, b, 1);
      A[b]:=a[b]+1;
    end;
    For i := 0 to 255 do
      ListBox1.Items.Append(IntToStr(i) + ' - ' + inttostr(a[i]) + ';~   ' + FloatToStr(A[i]/FileS));
  end;из этого после делаем словарьи файл который надо сжать переводим по одному байту в двоичный код, после соединяем по 8 и засовываем уже в новый файл...
 That will be, you and do not learn, if never will try! ^__^ |  27 мая 2013, 12:10: Вопрос закрыт (решение принял DNK): Всё заглохло Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |