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

Вниз

Распаковка&упаковка псевдо-архива   Найти похожие ветки 

 
Ярослав   (2006-07-13 10:58) [0]

Мне нужо распаковать и упаковать псевдо-архив, в котором хранятся png-файлы.

Пример такого архива - http://e-commers.ru/cbs.rar

Вот код распаковки:

procedure UnpackSTG(const InFile,OutDir:string);
var
 A:Integer;
 Stream:TFileStream;
 ASize:DWORD;
begin
 if DirectoryExists(OutDir)=false then CreateDir(OutDir);
 Stream:=TFileStream.Create(InFile,fmOpenRead);
 try
   A:=1;
   while Stream.Read(ASize,SizeOf(ASize))=SizeOf(ASize) do
     with TFileStream.Create(Format("%s%d.png",
[IncludeTrailingBackSlash(OutDir),A]),fmCreate) do try
       CopyFrom(Stream,ASize);
       Inc(A);
     finally
       Free;
     end;
 finally
   Stream.Free;
 end;
end;


А упаковать файлы в такой псевдо-архив у меня не получается...


 
Dmitrij_K   (2006-07-13 11:37) [1]

Что не получается. Все просто, пишешь размер файла 4 байта, пишешь содержимое файла. Итд


 
Dmitrij_K   (2006-07-13 11:57) [2]

Примерно так
procedure PackSTG(const InFile,OutDir:string);
var
Stream:TFileStream;
Stream2:TFileStream;
ASize:DWORD;
ssr:TSearchRec;
begin
Stream := TFileStream.Create(InFile,fmCreate);
try
  if FindFirst(outdir+"*.png", faAnyFile, ssr)=0 then
    repeat
      Stream2 := nil;
      try
        Stream2 := TFileStream.Create(ssr.Name,fmOpenRead);
        ASize   := Stream2.Size;
        Stream.Write(asize, SizeOf(ASize));
        Stream.CopyFrom(Stream2, asize);
      finally
        Stream2.Free;
      end;
    until FindNext(ssr)<>0;
  FindClose(ssr);
finally
  Stream.Free;
end;
end;


 
Ярослав   (2006-07-13 13:14) [3]

Спасибо вам, Dmitrij_K!


 
Ярослав   (2006-07-13 13:14) [4]

Спасибо вам, Dmitrij_K!



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

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

Наверх




Память: 0.47 MB
Время: 0.044 c
2-1155025590
ttt_111
2006-08-08 12:26
2006.08.27
Работа со сканером штрих-кода.


15-1154501290
vidiv
2006-08-02 10:48
2006.08.27
Русская ISA Server 2004


1-1152524205
Чапаев
2006-07-10 13:36
2006.08.27
Активировать форму


2-1154332057
Gamer
2006-07-31 11:47
2006.08.27
Перенести информацию (с картинками) с двух RichEdit ов в один


4-1146747934
Ангела
2006-05-04 17:05
2006.08.27
Как создать список папок и файлов