Hi Luuk, nice work

I just looked at your code, rather neat.

I have coded an extra Params() function for a variable amount of params that you could use instead of using the multiple functions if you wish...

Code:
function Params(const p: array of TParam): TParams; overload;


implementation

{...}


function Params(const p: array of TParam): TParams; overload;var
  i: Integer;
begin
  setLength(Result,Length(p));
  for i := 0 to High(p) do
    result[i] := p[i];
end;
You would use it like so (adding any amount of params to the 'list' between the '[' and ']'):

Code:
Command('SetValues', @SetValues, Params([p(PT_BOOL), p(PT_INT), p(PT_FLOAT), p(PT_STR)]));
cheers,
Paul