ПОЛУЧЕНИЕ *.RES ФАЙЛА, ДОБАВЛЕНИЕ В НЕГО *.EXE, *.DLL ФАЙЛОВ, С ПОСЛЕДУЮЩИМ ИЗВЕЛЕЧЕНИЕМ НА DELPHI 7.
Не судите строго это моя 1 статья и расчитана она на начинающих кодеров. Ну чтож начнем.
Для начала создайте папку и разместите в ней следующие файлы:
1. brcc32.exe (берем этот файл в этой папке D:\Program Files\Borland\Delphi7\Bin);
2. Создаем файл primer.rc, в котором мы укажем какие файлы мы будем добавлять в файл res;
3. Создаем compile.bat им мы будим собирать наш res файл;
4. Ну и естественно тот файл, который мы будем помещать в ресурсы,( у меня ResFile.exe).
Все с великим копи пастом мы закончили, теперь поработаем чуток клавой.
Для начала откроем файл primer.rc блокнотом и запишем в нем следующую строку:
"ResFile EXEFILE ResFile.exe"( без кавычек естесно).
Теперь объясню что тут к чему:
1. ResFile - это имя нашего ресурса в res файле, к которому мы будем обращаться и в котором хранится наш файл;
2. EXEFILE - тип файла(папка в файле *.res), он ни на что не влияет и служит для удобства поиска данных в фале ресурсов, чаще всего его имя соответствует типу находящихся в нем данных, но может быть и любым другим;
3. ResFile.exe - это файл, который мы добавляем в файл ресурсов.
Закрываем и сохраняем файл primer.rc.
Теперь откроем compile.bat(тож блокнотом) и пишем тауую строчку:
"brcc32 primer.rc"
Этой командой мы получим файл primer.res после запуска compile.bat.
Сохраняем и закрываем compile.bat, запустите, в папке вы должны увидеть primer.res.
Теперь переходим к кодингу, запускаем Delphi создаем новый проект и пишем следующий код:
Код:
implementation
{$R *.dfm}
{$R primer.RES} //наш файл с ресурсами
function ExtractResFile(ResType, ResName, ExeFileName:string): Boolean; // данная функция будет извлекать из primer.RES наш exe файл
var
Res: TResourceStream; // переменная для доступа к ресурсам
begin
Res := TResourceStream.Create(Hinstance, ResName, PChar(ResType)); // получаем доступ к ресурсам, загружаем
try
Res.SavetoFile(ExeFileName); // и сохраняем их в файл
Result := True;
finally
Res.Free; // освобождаем
end;
end;
Теперь кинем на форму Button1 и пишем в ней следующий код:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
FileName:string; // переменная, в которой будет храниться имя конечного файла.
begin
FileName:='ResFile.exe';//имя файла
ExtractResFile('EXEFILE', 'ResFile', FileName ); //извлекаем файл ResFile.exe
end;
Для проведения таких же манипуляций с *.dll или с любым другим файлом, можно использовать этот же код, только в место ехе файла подставите свою dll.
Если вы захотите разместить несколько файлов в одном файле ресурсов, то для доступа к ним потребуется использовать разные TResourceStream, но это если вы захотите получить доступ к нескольким файлам ресурса в рамках одной процедуры или функции.