Содержание материала

"Array of const" это массив переменных, декларированных как константы. Непосредственно они представлены структурой TVarRec. Скобки просто ограничивают массив. Массив констант дает вам возможность передавать процедуре переменное количество параметров type-safe (безопасным) способом. Вот пример:

 

 

Code:

type

TVarRec = record

   Data: recordcase Integer of

       0: (L: LongInt);

       1: (B: Boolean);

       2: (C: Char);

       3: (E: ^Extended);

       4: (S: ^string);

       5: (P: Pointer);

       6: (X: PChar);

       7: (O: TObject);

   end;

   Tag: Byte;

   Stuff: array[0..2] of Byte;

end;

 

function PtrToStr(P: Pointer): string;

const

HexChar: array[0..15] of Char = '0123456789ABCDEF';

 

function HexByte(B: Byte): string;

begin

   Result := HexChar[B shr4] + HexChar[B and15];

end;

 

function HexWord(W: Word): string;

begin

   Result := HexByte(Hi(W)) + HexByte(Lo(W));

end;

 

begin

Result := HexWord(HiWord(LongInt(P))) + ':' + HexWord(LoWord(LongInt(P)));

end;

 

procedure Display(X: arrayofconst);

var

I: Integer;

begin

for I := 0to High(X) do

   with TVarRec(X[I]), Data do

   begin

     case Tag of

       0: ShowMessage('Integer: ' + IntToStr(L));

       1: if B then

           ShowMessage('Boolean: True')

         else

           ShowMessage('Boolean: False');

       2: ShowMessage('Char: ' + C);

       3: ShowMessage('Float: ' + FloatToStr(E^));

       4: ShowMessage('String: ' + S^);

       5: ShowMessage('Pointer: ' + PtrToStr(P));

       6: ShowMessage('PChar: ' + StrPas(X));

       7: ShowMessage('Object: ' + O.ClassName);

     end;

   end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

P: array[0..5] of Char;

 

begin

P := 'Привет'#0;

Display([-12345678, True, 'A', 1.2345, 'ABC', Ptr($1234, $5678), P,

   Form1]);

end;

 Взято с https://delphiworld.narod.ru

 Массив констант (array of const) фактически является открытым массивом TVarRec (описание предекларированных типов Delphi вы можете найти в электронной справке). Приведенный ниже "псевдокод" на языке Object Pascal может послужить скелетом для дальнейшего развития:

 

Code:

procedure AddStuff(const A: arrayofconst);

var i: Integer;

begin

for i := Low(A) to High(A) do

   with A[i] do

     case VType of

       vtExtended:

         begin

{ добавляем натуральное число, все real-форматы

автоматически приводятся к extended }

         end;

       vtInteger:

         begin

 

{ добавляем целое число, все integer-форматы

автоматически приводятся к LongInt }

         end;

       vtObject:

         begin

           if VObject is DArray then

             with DArray(VObject) do

               begin

{ добавляем массив double-типа }

               end

           elseif VObject is IArray then

             with IArray(VObject) do

               begin

{ добавляем массив integer-типа }

               end;

         end;

     end; { Case }

end; { AddStuff }

 Для получения дополнительной информации загляните в главу "open arrays" электронной справки.

 

Взято из Советов по Delphi от Валентина Озерова

Сборник Kuliba

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить