pascalabcnet/TestSuite/CompilationSamples/Utils.pas
Mikhalkovich Stanislav 66b7aa42c5 fix #2058
Небольшие правки в CodeTemplates
2019-08-02 10:17:49 +03:00

47 lines
1.2 KiB
ObjectPascal

// Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
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.