This commit is contained in:
Ivan Bondarev 2021-04-25 18:03:30 +02:00
parent ead8721f4f
commit 0252b1b3e7
5 changed files with 57 additions and 0 deletions

BIN
Utils/rc/header_part1 Normal file

Binary file not shown.

BIN
Utils/rc/header_part2 Normal file

Binary file not shown.

57
Utils/rc/rc.pas Normal file
View file

@ -0,0 +1,57 @@
{$resource header_part1}
{$resource header_part2}
{$resource res_end}
{$reference System.Drawing.dll}
begin
try
var icon_str := System.IO.File.OpenRead(CommandLineArgs[0]);
var icon := new System.Drawing.Icon(icon_str);
icon_str.Position := 0;
if icon.Width <> icon.Height then Halt(1);
case icon.Width of
1,2,4,8,16,32: ;
else Halt(2);
end;
var v: word := icon_str.Length-22;
var otp := System.Console.OpenStandardOutput;
//var otp := System.IO.File.Create('test.res');
var bw := new System.IO.BinaryWriter(otp);
GetResourceStream('header_part1').CopyTo(otp);
bw.Write(v);
GetResourceStream('header_part2').CopyTo(otp);
var br := new System.IO.BinaryReader(System.IO.File.OpenRead(CommandLineArgs[0]));
br.BaseStream.Position := 19;
bw.Write(br.ReadBytes(br.BaseStream.Length-19));
GetResourceStream('res_end').CopyTo(otp);
bw.Write(byte(icon.Width));
bw.Write(byte(icon.Width));
bw.Write(byte($10));
if icon.Width = 1 then
bw.Write(byte($FF)) else
bw.Write(byte($01));
bw.Write(byte($01));
bw.Write(byte($00));
bw.Write(byte($04));
bw.Write(byte($00));
bw.Write(v);
bw.Write(byte($00));
bw.Write(byte($00));
bw.Write(byte($01));
bw.Write(byte($00));
bw.Flush;
except
on e: Exception do
begin
//WriteAllText('RC error log.txt', _ObjectToString(e));
//Exec('RC error log.txt');
Halt(e.HResult);
end;
end;
end.

BIN
Utils/rc/res_end Normal file

Binary file not shown.

BIN
bin/rc.exe Normal file

Binary file not shown.