Интегрирование в EXE-шник других файлов



Автор: Delirium

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Интегрирование в EXE-шник других файлов

Процедура из указанного файла (FileName) создаёт unit в котором объявлен,
заполненный побайтово, массив и процедура сохранения этого массива обратно
в файл. Таким образом можно включить в один EXE-шник множество других
файлов (dll, ocx, dbf и т.п.) - прикрепить их как unit-ы. Фактически,
после сжатия EXE-шника программами типа UPX, получаем довольно компактный
файл, который можно использовать в качестве дистрибутива, например.

Зависимости: SysUtils, System
Автор:       Delirium
Copyright:   Delirium (Master BRAIN)
Дата:        22 мая 2002 г.
***************************************************** }

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;




Похожие по теме исходники

Erase self EXE

EXE/PE Properties

Binary Search Images in EXE

HWnd2EXE

 

Exec and Wait

Add Code to EXE

Executor

ExeFog (сжатие EXE)

 

PE EXE Coder

Чтение PSD файлов

Шифратор файлов

Поиск файлов

 

FileMan (менеджер файлов)

Поиск открытых файлов