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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2010, 20:38   #1
Mihanches
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 89
Восклицание Архивация

Взял код с форума:
Код:
var 

  source,dest:TFileStream;//поток-источноик, поток-приёмник 

  CompresSstream:TCompressionStream;    // поток – архиватор 

  bytesread:integer;   

  mainbuffer:array[0..1023] of char; // буфер 

begin 

  source:=TFileStream.Create(’< Путь к файлу >’,fmOpenRead);   // создаём поток – источник 

  dest:=TFileStream.Create(’< Путь к результату >’,fmCreate); // создаём поток – приёмник 

  CompresSstream:=TCompressionStream.Create(clMax,dest);// создаём поток – архиватор c                   //          максимальной степенью сжатия 

  try                // НА ВСЯКИЙ ПОЖАРНЫЙ 

   repeat                      

    bytesread:=source.Read(mainbuffer,buffer_size);    // считываем из источника в буфер 

    CompresSstream.Write(mainbuffer,bytesread);     //   записываем из буфера в поток – архиватор 

    until bytesread<1024;   // всё это до тех пор пока весь источник не будет считан 

  except    //   если всё же возникнет какая-нибудь оБшибка!!! 

   CompresSstream.free; 

   source.Free; 

   dest.Free; 

   exit; 

  end;   // всё прошло успешно 

  CompresSstream.free; 

  source.Free; 

  dest.Free; 

end;
Возникает вопрос: в каком формате должен быть файл-результат? И еще:Unit1.pas(49): E2003 Undeclared identifier: 'buffer_size'
Что значит ошибка, и как ее исправить?

Последний раз редактировалось Stilet; 16.10.2010 в 21:26.
Mihanches вне форума Ответить с цитированием
Старый 17.10.2010, 00:52   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Вероятно всего вот так:
{
В Uses дописываем Zlib;
}
Код:
const
  Buffer_Size=1024; //Размер буфура.

var 
  source,dest:TFileStream;
  CompresSstream:TCompressionStream;    
  bytesread:integer;
  mainbuffer:array[0..1023] of char;
begin 
  source:=TFileStream.Create(’< Путь к файлу >’,fmOpenRead);
  dest:=TFileStream.Create(’< Путь к результату >’,fmCreate);
  CompresSstream:=TCompressionStream.Create(clMax,dest);
  try  
   repeat                      
    bytesread:=source.Read(mainbuffer,buffer_size);  
    CompresSstream.Write(mainbuffer,bytesread);     
    until bytesread<1024;  
  except   
   CompresSstream.free; 
   source.Free; 
   dest.Free; 
   exit; 
  end;   
  CompresSstream.free; 
  source.Free; 
  dest.Free; 
end;
ошибка значит что переменная не обьявлена.

Так как Zlib это ZIP то и файлы можно писать в *.Zip.

Но если в этом нет необходимости т.е. чтобы придать вид того что эти файлы понимает только ваша программа то пишем то расширение которые вы захотите.
ТупоИспользование Приведённого Кода никуда не годиться.
Его ещё напильником предстоит из квадрата в кружок обрабатывать

Последний раз редактировалось Человек_Борща; 17.10.2010 в 00:58.
Человек_Борща вне форума Ответить с цитированием
Старый 17.10.2010, 10:23   #3
Mihanches
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 89
По умолчанию

Работает, спасибо. Новый вопрос: я думал, что файл после упаковки можно будет отрыть WinRar'ом . Неполучилось. Как сделать так, что бы при запуске уже заархивированного файла все его содержимое (в примере можно использовть файл file.jpg) разархивировалось в папку с самим архивом?
Mihanches вне форума Ответить с цитированием
Старый 17.10.2010, 11:34   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

По этому поводу ничего не могу сказать точно сказать. Просто никогда не требовалось распаковывать Zlib-архивы с помощью WinRar.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Архивация файла BoT_T Общие вопросы Delphi 4 14.10.2010 08:02
Архивация папки Vistar Общие вопросы .NET 12 11.01.2010 22:29
Архивация БД dron-s БД в Delphi 0 10.03.2008 12:08
Архивация Mitron Общие вопросы Delphi 10 14.02.2008 16:00