Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Переменное количество параметров любого типа

Автор: Neil

Вы можете определить список параметров процедуры как "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;
 

Теперь в обработчике события кнопки OnClick вызываем процедуру Display и передаем ей "что попало". Числа, строки, PChar-ы, объекты! Например:


 Display([42, 1.234, 'A', 'Васек Трубачев', Form1, TButton]);
 

Практичестки это программа с переменным числом параметров. Но самом деле параметр один, но он является массивом, содержащим переменное количество параметров различного типа. Потрясающе!




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS