Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Упаковать файлы в свою программу


Автор: shapka1ushanka 21.5.2010, 13:04
Надо сделать, чтобы мой экзешник мог родить несколько файлов (.exe, .chm, .txt), как это делают разные инсталляторы. Какими способами можно такое реализовать?

Автор: Maks1509 21.5.2010, 18:12
http://www.michael-puff.de/Programmierung/Delphi/Programme/SFXTools.zip
Пойдет такой пример? smile 

Автор: shapka1ushanka 24.5.2010, 20:50
скачал пример.... толи у меня руки кривые, толи хз что, но после распаковки вместо файлов получается какая-то хрень :((
вот пример распакованного txt файла:
Код

MZP      ÿÿ  ¸       @                                     º ´    Í!¸LÍ!This program must be run under Win32
$7

Автор: Демо 24.5.2010, 21:34
http://www.almar.su/dokuwiki/doku.php?id=notes:delphi:00004

Автор: bems 24.5.2010, 22:49
shapka1ushanka, Есть ущущение что ты перепутал имена. Это не текстовый файл, а exe или dll

Автор: RinOSpro 7.6.2010, 14:40
Процедура ниже создает из файла unit, который ты включаешь в программу.

там есть функция SaveToFile, думаю в переводе не нуждается smile

Код

procedure FileToPas(FileName: string);
var
  BF: file of Byte; 
  F: TextFile;
  P, N, S: string;
  BFSize: integer; 
  BBB: Byte;
begin 
  AssignFile(BF, FileName);
  Reset(BF);
  BFSize := FileSize(BF); 
  P := ExtractFilePath(FileName); 
  N := ExtractFileName(FileName);
  N := ChangeFileExt(N, '.PAS'); 
  AssignFile(F, N);
  ReWrite(F); 
  Writeln(F, '(* Generated by Master BRAIN (C) 2002 *)'); 
  Writeln(F, 'unit ' + ChangeFileExt(N, '') + ';');
  Writeln(F); 
  Writeln(F, 'interface'); 
  Writeln(F);
  Writeln(F, 'const FileSize:integer=' + IntToStr(BFSize) + ';'); 
  Writeln(F, 'FileData:array[0..' + IntToStr(BFSize - 1) + '] of Byte=');
  Writeln(F, '('); 
  while not Eof(BF) do
  begin
    S := '';
    while (not Eof(BF)) and (Length(S) < 80) do 
    begin
      Read(BF, BBB);
      S := S + IntToStr(BBB) + ','; 
    end; 
    if Eof(BF) then
      Delete(S, Length(S), 1); 
    Writeln(F, S); 
  end; 
  CloseFile(BF); 
  Writeln(F, ');');
  Writeln(F); 
  Writeln(F, 'procedure SaveToFile(FileName:String);'); 
  Writeln(F); 
  Writeln(F, 'implementation'); 
  Writeln(F);
  Writeln(F, 'procedure SaveToFile(FileName:String);'); 
  Writeln(F, 'var F:File of Byte;'); 
  Writeln(F, ' i:integer;'); 
  Writeln(F, 'begin');
  Writeln(F, 'AssignFile(F,FileName);'); 
  Writeln(F, 'ReWrite(F);'); 
  Writeln(F, 'for i:=0 to FileSize-1 do Write(F,FileData[i]);'); 
  Writeln(F, 'CloseFile(F);');
  Writeln(F, 'end;'); 
  Writeln(F); 
  Writeln(F, 'end.'); 
  CloseFile(F);
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)