Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.043 c
14-1117028731
Lexer
2005-05-25 17:45
2005.06.14
OR в C++ одним знаком


1-1117004417
r13
2005-05-25 11:00
2005.06.14
Перехват ошибок


14-1116859334
TAHAT
2005-05-23 18:42
2005.06.14
Существуют ли компоненты для работы с архивами 7Zip?


6-1111765908
Tipok
2005-03-25 18:51
2005.06.14
Установление соединения


8-1108377216
_micha
2005-02-14 13:33
2005.06.14
Как приближённо оценить совпадение двух RGB- цветов ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский