Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Внизархивация текстового файла программно Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c