Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Программа и Интерфейс , EXE файл

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

Автор: Delirium
WEB-сайт: http://delphibase.endimus.com

{ **** 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;

Перевод контента на русский язык:

Это программное обеспечение Delphi, которое интегрирует другие файлы в файл EXE. Программа читает указанный файл (FileName) и генерирует модуль на языке Pascal, содержащий байтовый массив, заполненный содержимым оригинального файла, а также процедуру для сохранения этого массива обратно в файл.

Распределение кода:

  1. Процедура FileToPas принимает имя файла в качестве параметра входных данных.
  2. Она присваивает файл бинарному файлу (BF) и сбрасывает его для чтения.
  3. Она получает размер файла, извлекает путь к файлу, имя и расширение из имени файла и изменяет расширение на '.PAS'.
  4. Она создает текстовый файл (F) с тем же именем, что и оригинальный файл, но с расширением '.PAS'.
  5. Программа пишет следующий код в текстовый файл:
    • Заголовок комментария, указывающий, что модуль был сгенерирован Master BRAIN в 2002 году.
    • Декларация модуля с именем файла (без расширения).
    • Секция интерфейса, декларирующая два константы: FileSize и FileData.
    • Константа FileData - это массив байтов размером в файловый размер минус один.
    • Программа затем читает оригинальный файл по байтам, преобразует каждый байт в строку и пишет его в текстовый файл. Этот процесс продолжается до конца файла.
  6. После чтения всех байтов программа закрывает бинарный файл (BF) и пишет закрывающие скобки для декларации массива FileData.
  7. Программа затем декларирует секцию реализации с процедурой, называемой SaveToFile. Эта процедура принимает строковый параметр (FileName), присваивает его бинарному файлу (F), переписывает файл и пишет все байты из массива FileData обратно в файл.
  8. Наконец, программа закрывает текстовый файл (F) и завершается.

Цель этой программы - интегрировать другие файлы в файл EXE, конвертируя их в модули Pascal, которые затем могут быть скомпилированы в единый исполняемый файл. Этот подход позволяет эффективно распространять множество файлов в одном пакете.

Некоторые предложения по улучшению кода:

  1. Используйте константы вместо магических чисел (например, 80 в цикле while).
  2. Рассмотрите добавление обработки ошибок для случаев, когда вводный файл не может быть прочитан или записан.
  3. Используйте более описательные имена переменных для улучшения читаемости кода.
  4. Вам может потребоваться добавить дополнительную функциональность, например, поддержку различных форматов файлов или алгоритмов сжатия.

В целом, это программное обеспечение предоставляет полезный механизм для интеграции множества файлов в единый исполняемый файл, который может быть полезен в различных сценариях, включая распространение и развертывание программного обеспечения.

В статье описана процедура для интеграции файлов в EXE-шник, позволяющая включить в один файл множество других файлов (DLL, OCX, DBF и т.д.) как unit-ы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: EXE файл ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:07:03/0.0058939456939697/1