Главная страница
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.027 c
15-1154626301
UnKnownPeople
2006-08-03 21:31
2006.08.27
Где настраиваются расширения при сохранении рисунков?


2-1155091024
vladimirg88
2006-08-09 06:37
2006.08.27
JPEG


15-1153994520
@!!ex
2006-07-27 14:02
2006.08.27
Слушаем ICQ


8-1140444515
salexn
2006-02-20 17:08
2006.08.27
определение текущей кодировки


15-1154073368
NeyroSpace
2006-07-28 11:56
2006.08.27
Нужна программакоторая может организовать аудиовидео конференцию