Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

архивация текстового файла программно   Найти похожие ветки 

 
sapsi   (2005-05-27 14:15) [0]

Добрый день.
Существуют ли компоненты для Дельфи 5 для архивации файлов.
Если нет, то каким еще способом можно программно заархивировать файл.
Спасибо.


 
Anatoly Podgoretsky ©   (2005-05-27 14:19) [1]

Очень много способов, например есть очень простая функция CopyFile


 
sapsi   (2005-05-27 14:48) [2]

В смысле copy file, мне нужно сжать большой текстовой файл с помощью механизмов рар или арж программно.


 
Anatoly Podgoretsky ©   (2005-05-27 14:52) [3]

Сжатие и архивация разные вещи. Для сжатия существует много библиотек. Насчет рар разочарую, интерфейс не предоставляется, проприетарный формат.


 
Eraser ©   (2005-05-27 14:53) [4]

sapsi   (27.05.05 14:15)

Если имеется в виду сжатие, то советую глянуть в сторону модуля ZLib.


 
Andy BitOff ©   (2005-05-27 15:51) [5]

sapsi   (27.05.05 14:15)
Посмотри здесь:
http://www.oberhumer.com/opensource/
В частности я использую UCL, чего и тебе советую.


 
dEd   (2005-05-29 07:47) [6]

Можно просто вызвать WinRAR:
var
 FolderName, CmdLine: string;
begin
 if not SelectDirectory("Выбор папки для архивации","",FolderName) then
   Exit;
 CmdLine:="winrar.exe a -m5 -s -dh ";
 CmdLine:=CmdLine + """+FolderName + "\";
 CmdLine:=CmdLine+DateToStr(Date) +".rar" ";
 CmdLine:=CmdLine+"Data";
 WinExec(PChar(CmdLine),SW_HIDE);
 ShowMessage("Архив "+DateToStr(Date) +".rar создан")


 
VMcL ©   (2005-05-29 08:24) [7]

>>dEd   (29.05.05 07:47) [6]

>ShowMessage("Архив "+DateToStr(Date) +".rar создан")

Не факт.


 
Antonn ©   (2005-05-29 08:32) [8]

sapsi   (27.05.05 14:15)
стандартными средствами можно сжать, и соответственно разжать, только другие приложения такой файл не откроют.


 
sapsi   (2005-05-30 13:38) [9]

2 antonn: открывать нужно этим же приложением. Объясни, плиз ,чем. Rarа может не быть на искомом компе.


 
Antonn ©   (2005-05-30 14:03) [10]

сам недавно разбирался, средствами Дельфи можно сжать zlib"ом. Я работал с TMemoryStream, поэтому написал для себя пару процедур. Они немного велосипедные, но работают. Причем довольно неплохо сжимают.

uses zlib;

procedure Pack_Memory(var _in:TMemoryStream);
procedure UnPack_Memory(var _in:TMemoryStream);

implementation

procedure Pack_Memory(var _in:TMemoryStream);
var
 TmpStream : TMemoryStream; CmpStream : TCompressionStream;
begin
 TmpStream := TMemoryStream.Create;
 CmpStream := TCompressionStream.Create (clMax, TmpStream);
 application.ProcessMessages;
 _in.Seek (0, 0);
 CmpStream.CopyFrom (_in, _in.Size);
 CmpStream.Free;
 TmpStream.Position:=0;
 _in.Position:=0;
 _in.SetSize(TmpStream.Size);
 _in.CopyFrom (TmpStream, TmpStream.Size);
 TmpStream.Free;
end;

procedure DecompressStream(inpStream, outStream: TMemoryStream);
var
 InpBuf, OutBuf: Pointer;
 OutBytes, sz: Integer;
begin
 InpBuf := nil;
 OutBuf := nil;
 sz     := inpStream.Size - inpStream.Position;
 if sz > 0 then  
   try
     GetMem(InpBuf, sz);
     inpStream.Read(InpBuf^, sz);
     DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
     outStream.Write(OutBuf^, OutBytes);
   finally
     if InpBuf <> nil then FreeMem(InpBuf);
     if OutBuf <> nil then FreeMem(OutBuf);
   end;
 outStream.Position := 0;
end;

procedure UnPack_Memory(var _in:TMemoryStream);
var _out:TMemoryStream;
begin
  _out := TMemoryStream.Create;
  _in.Position:=0;
  DecompressStream(_in, _out);
 _in.Seek(0,0);
 _in.CopyFrom(_out, _out.Size);
  _out.Free;
end;


 
VladimirB ©   (2005-05-30 14:13) [11]

Попробуй UCL Compression Library.
http://www.delphipages.com/edit/count.cfm?ID=3894


 
Andy BitOff ©   (2005-05-30 16:47) [12]

VladimirB ©   (30.05.05 14:13) [11]

Внимательнее надо быть =)

Andy BitOff ©   (27.05.05 15:51) [5]
sapsi   (27.05.05 14:15)
Посмотри здесь:
http://www.oberhumer.com/opensource/
В частности я использую UCL, чего и тебе советую.



Страницы: 1 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
4-1113737504
volser
2005-04-17 15:31
2005.06.14
Генерация Hardware ID


4-1112857716
zioza
2005-04-07 11:08
2005.06.14
Блокировать копирование exe


3-1115819862
_e_u_
2005-05-11 17:57
2005.06.14
добавить запись в поле типа текст


1-1117122983
Hromosom
2005-05-26 19:56
2005.06.14
Как двигать окно программы нажав на ней мышью?


14-1116654893
petya-kurochkin
2005-05-21 09:54
2005.06.14
Курсоры(Обобщение)