Вы можете определить список параметров процедуры как "Foo : ARRAY of const" и использовать почти ЛЮБОЙ тип параметра. Вот пример. Разместите на форме компоненты Memo и Button и добавьте строку "procedure Display(X : array of const);" в определения класса формы после комментария { Private Declarations }. Создайте функцию типа этой:
procedure TForm1.Display(X: array of const); var I: Integer; begin Memo1.Clear; for I := 0 to High(X) do with TVarRec(X[I]) do WITH Memo1.Lines DO case VType of vtInteger : Add('Integer:'#9 + IntToStr(VInteger)); vtBoolean : if VBoolean then Add('Boolean:'#9'True' else Add('Boolean:'#9'False'); vtChar : Add('Char:'#9 + VChar); vtExtended: Add('Float:'#9 + FloatToStr(VExtended^)); vtString : Add('String:'#9 + VString^); vtPointer : Add('Pointer:'#9 + Format('%p', [VPointer])); vtPChar : Add('PChar:'#9 + StrPas(VPChar)); vtObject : Add('Object:'#9 + VObject.ClassName); vtClass : Add('Class:'#9 + VClass.ClassName); end; end;