Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.03 c
6-1143915350
NKVDwnik
2006-04-01 22:15
2006.08.27
Отправка почты


2-1155036326
Yeg
2006-08-08 15:25
2006.08.27
TreeView.Items.Count


2-1154682670
TrainerOfDolphins
2006-08-04 13:11
2006.08.27
Action.ShortCut:=Ctrl+S;


15-1154011493
Vlad
2006-07-27 18:44
2006.08.27
Майкрософт шалит? :-)


3-1150185728
Still Swamp
2006-06-13 12:02
2006.08.27
Как восстановить FB базу из скрипта




   Наверх