Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];

Вниз

Как несколько файлов упаковать в один внешний   Найти похожие ветки 

 
GBF   (2002-04-15 15:05) [0]

так как это сделанов игрушке Quake :)

интересует как упаковать всё в один файл,а потом из моей проги эти данные (файлы) прочитать ?

Заранее всем спасибо.


 
VEG   (2002-04-15 15:40) [1]

Пихай файлы в ресурс, а потом распаковывай их из exe-шника. это теория. Код нуженн, или сам знаешь?


 
VEG   (2002-04-15 15:51) [2]

1. Пишем в блокноте RC-файл, куда прописываем все нужные нам программы и другие файлы, например: ARJ EXEFILE C:\UTIL\ARJ.EXE
2. Компилируем его в ресурс при помощи Brcc32.exe. Получаем RES-файл.
3. Далее в тексте нашей программы:

implementation
{$R *.DFM}
{$R test.res} //Это наш RES-файл
procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;

begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
// Записывает в текущую папку arj.exe
ExtractRes("EXEFILE", "ARJ", "ARJ.EXE");
end;


 
VEG   (2002-04-15 15:52) [3]

Все понятно?


 
MBo   (2002-04-15 16:34) [4]

вряд ли захочется иметь exe в 100 мегабайт.
удобнее всего с помощью TFileStream укладывать файлы в один, и потом читать.вот простой пример:

I am trying to take some .png files and put them in one file, which will also specify the position of
the start and end of each file in the big file

From: MBo Date: 04/14/2002 09:51PM PST
This is simple way. Look at Seek and Position for more complex work

If you need to save filenames in result file, write string:
N:=Length(Fname);
FS.Write(N,SizeOf(Integer));
FS.Write(FName[1],SizeOf(Integer));
and read
FS.Read(N,SizeOf(Integer));
SetLength(Fname,N);
FS.Read(Fname[1],N);
and then
FSSave:=tfilestream.create(fname...)



procedure TForm1.Button1Click(Sender: TObject);
var
FS,FSLoad:tfilestream;
N:integer;
begin
FS:=tfilestream.create("e:\files.dat",fmCreate);
N:=2;
FS.Write(N,SizeOf(Integer));
FSLoad:=tfilestream.create("e:\4.jpg",fmOpenRead);
N:=FSload.Size;
FS.Write(N,SizeOf(Integer));
FS.CopyFrom(FSLoad,N);
FSLoad:=tfilestream.create("e:\5.jpg",fmOpenRead);
N:=FSload.Size;
FS.Write(N,SizeOf(Integer));
FS.CopyFrom(FSLoad,N);
FSLoad.Free;
FS.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
FS,FSSave:tfilestream;
Num,N,NSize:integer;
begin
FS:=tfilestream.create("e:\files.dat",fmOpenRead);
FS.Read(Num,SizeOf(Integer));
for N:=1 to Num do begin
FSSave:=tfilestream.create("e:\file"+inttostr(N)+".jpg",fmCreate);
FS.Read(NSize,SizeOf(Integer));
FSSave.CopyFrom(FS,NSize);
FSSave.Free;
end;
FS.Free;
end;



 
VEG   (2002-04-15 17:05) [5]

Размер программы не указывался. Если оччень большой объем файлов, то можно использовать AttachToExe. Хоть exe-шник и будет 100мб, но в памяти будет только сама прога (200кб и более)



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

Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.005 c
3-94346
62mkv
2002-04-10 10:27
2002.04.29
Ребята, есть ли у кого-нибудь отдельный дистрибут QReport 3 ?


14-94570
Почемучка
2002-03-20 12:33
2002.04.29
QReport в Delphi 5.0


1-94405
heruvim4ik
2002-04-17 22:21
2002.04.29
Password Char


1-94490
Satirus
2002-04-16 16:00
2002.04.29
Вопрос к разработчикам компонент


3-94319
iva
2002-04-09 13:30
2002.04.29
Как добавить поле





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский