Correcto, lo hice al revés! Lo que necesitas es convertir de String a T:
Código Delphi
[-]
{$ifdef fpc}
{$mode delphi}
{$endif}
program Hello;
uses
SysUtils;
type
TConverter = function (const S: String): T;
function IntToStr(const S: String): Integer;
begin
Result := StrToInt(S)
end;
type
TSpliter = class
class function Split(const S: string; const Separator: array of char; const convert: TConverter): TArray;
end;
class function TSpliter.Split(const S: string; const Separator: array of char; const convert: TConverter): TArray;
var
i: Integer;
lArrStr: TArray<String>;
lArr: TArray;
begin
lArrStr := S.Split(Separator);
SetLength(lArr, High(lArrStr) + 1);
for i := 0 to High(lArrStr) do
begin
lArr[i] := convert(lArrStr[i]);
end;
Result := lArr;
end;
var
i: Integer;
nums: TArray;
begin
nums := TSpliter.Split('1;100;1000', [';'], IntToStr);
for i := 0 to High(nums) do
begin
WriteLn(nums[i]);
end;
end.