45 lines
1,014 B
ObjectPascal
45 lines
1,014 B
ObjectPascal
unit Utils;
|
|
|
|
interface
|
|
|
|
uses System;
|
|
|
|
function RecordToByteArray(obj : object): array of byte;
|
|
procedure ShowMessage(msg: string);
|
|
procedure ShowMessage(msg,capt: string);
|
|
function GetFunctionPointer(fnc : Delegate) : integer;
|
|
|
|
implementation
|
|
|
|
uses System.Runtime.InteropServices;
|
|
|
|
function _MessageBox(h: integer; m,c: string; t: integer): integer;
|
|
external 'User32.dll' name 'MessageBox';
|
|
|
|
procedure ShowMessage(msg:string);
|
|
begin
|
|
ShowMessage(msg,'Сообщение');
|
|
end;
|
|
|
|
procedure ShowMessage(msg,capt:string);
|
|
begin
|
|
_MessageBox(0,msg,capt,0);
|
|
end;
|
|
|
|
function RecordToByteArray(obj : object): array of byte;
|
|
begin
|
|
var len := Marshal.SizeOf(obj);
|
|
Result := new byte[len];
|
|
var ptr := Marshal.AllocHGlobal(len);
|
|
Marshal.StructureToPtr(obj, ptr, false);
|
|
Marshal.Copy(ptr, Result, 0, len);
|
|
Marshal.FreeHGlobal(ptr);
|
|
end;
|
|
|
|
function GetFunctionPointer(fnc : Delegate) : integer;
|
|
begin
|
|
Result := System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(fnc).ToInt32;
|
|
end;
|
|
|
|
begin
|
|
end. |