Indeed, checkparameters in delphi needs at least one parameter (in FlexCel .NET it would have been fine because there a null array is different from an array with 0 elements).
The workaround of course is easy, don't call CheckParameters if there aren't parameters. you can just do something like:
type
TIndianaPI = class (TUserDefinedFunction)
public
constructor Create;
function Evaluate(const arguments: TUdfEventArgs; const parameters: TFormulaValueArray): TFormulaValue; override;
end;
constructor TIndianaPI.Create;
begin
inherited Create('IndianaPI');
end;
function TIndianaPI.Evaluate(const arguments: TUdfEventArgs; const parameters: TFormulaValueArray): TFormulaValue;
var
err: TFlxFormulaErrorValue;
begin
//Instead of: if not CheckParameters(parameters, 0, err) then exit(err);
if Length(parameters) <> 0 then exit(TFlxFormulaValue.ErrValue);
Result := 3.2;
end;
But anyway, in case you want to use CheckParameters for consistency, I've just fixed it so it will work as expected with 0 parameters. Just email me to adrian@tmssoftware for an update.