Форум: "Основная";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
ВнизРаспаковка&упаковка псевдо-архива Найти похожие ветки
← →
Ярослав (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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c