Поискал информацию...
Есть 2 способа реализовать:
Первый способ - это использование строковых констант, то есть берем файл, читаем его и создаем строки его содержимого, эти строки используем в модуле программы для записи обратно в файл.
#pas
function filetohex(infile:string):TStringList;
var
sl:TStringList;
myfile, leng : Cardinal;
i : Cardinal;
Buf : array [1..32] of Char;
s:string;
begin
sl := TStringList.create;
myfile:=_lopen(PChar(infile),OF_READ);
leng:=GetFileSize(myfile,0);
leng:=round(leng/16);
SL.Add('szBinary := '+#39#39+';');
while true do begin
FillChar(Buf,16,0);
leng:=_lread(myfile,addr(Buf[1]),16);
if (leng>16)or(leng=0) then break;
S:='';
for i:=1 to 16 do S:=S+IntToHex(ord(Buf[i]),2);
// SL.Add('szBinary = szBinary & "'+S+'"'); //for php
SL.Add('szBinary := szBinary + '+#39+S+#39+';');
end;
_lclose(myfile);
result:=SL;
end;
procedure hextofile(outfile:string);
var
t:text;
pos,len,ch :integer;
begin
szBinary := '';
szBinary := szBinary + 'BCCB131E2BC05089267101B430CD213C';
szBinary := szBinary + '027306BAF80EE9EB01E8A70AE8C40AE8';
szBinary := szBinary + 'E30AE8690AE9C6007000300030070000';
{. . .}
szBinary := szBinary + 'E001051F000000FE0900000000000000';
len:=length(szBinary);
pos:=1;
assignfile(t, outfile);
rewrite(t);
while pos<len do begin
ch:=strtoint('f'+copy(szBinary, pos,2));
write(t, chr(ch));
inc(pos,2);
end;
closefile(t);
end;
Второй способ - это подключение ресурсов. Например: {$R наш_ресурс.RES} Где наш_ресурс.RES - скомпилированный следующим образом ресурс:
Создаем файл .rc следующего содержания:
any_exe_file EXEFILE any_exe_file.exe
Компилируем с помощью программы, входящей в комплект Delphi, brcc32.exe:
brcc32.exe file.rc
Получаем file.res и подключаем в проекте : {$R file.RES} Размер скомпиленного файла конечно сразу вырастает на размер res файла. Для извлечения из ресурса используем процедуру:
Создаем файл .rc следующего содержания:
any_exe_file EXEFILE any_exe_file.exe
Компилируем с помощью программы, входящей в комплект Delphi, brcc32.exe:
brcc32.exe file.rc
Получаем file.res и подключаем в проекте : {$R file.RES} Размер скомпиленного файла конечно сразу вырастает на размер res файла. Для извлечения из ресурса используем процедуру:
#pas
procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
try
Res.SavetoFile(ResNewName);
except
end;
Res.Free;
end;
Используем следующим образом:
ExtractRes('EXEFILE', 'any_exe_file', 'путь_куда_извлечь\any_exe_file.exe');
ExtractRes('EXEFILE', 'any_exe_file', 'путь_куда_извлечь\any_exe_file.exe');
Тока не знаю как это реализовать в хайасме...
Знаю что можно с помощью компонента "InlineCode" (Вставка кода от делфи.)
Тока у меня не получается... Я новичок...
Может первый способ можно реализовать средствами хайасма... Т.е. без вставки кода... Низнаю...
Помогите пожайлуста!!!