procedure TForm1.Display(X: array of const);var I: Integer;beginMemo1.Clear;for I := 0 to High(X) do with TVarRec(X[I]) doWITH Memo1.Lines DOcase VType ofvtInteger : 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; |
Теперь в обработчике события кнопки OnClick вызываем процедуру Display и передаем ей "что попало". Числа, строки, PChar-ы, объекты! Например:
Display([42, 1.234, 'A', 'Васек Трубачев', Form1, TButton]); |
Практичестки это программа с переменным числом параметров. Но самом деле параметр один, но он является массивом, содержащим переменное количество параметров различного типа. Потрясающе!
- Neil [000488]