Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 154

•  TDictionary Custom Sort  6 215

•  Fast Watermark Sources  6 015

•  3D Designer  8 911

•  Sik Screen Capture  6 350

•  Patch Maker  6 769

•  Айболит (remote control)  6 750

•  ListBox Drag & Drop  5 625

•  Доска для игры Реверси  96 187

•  Графические эффекты  6 972

•  Рисование по маске  6 240

•  Перетаскивание изображений  5 142

•  Canvas Drawing  5 510

•  Рисование Луны  5 212

•  Поворот изображения  4 761

•  Рисование стержней  3 366

•  Paint on Shape  2 620

•  Генератор кроссвордов  3 509

•  Головоломка Paletto  2 798

•  Теорема Монжа об окружностях  3 609

•  Пазл Numbrix  2 365

•  Заборы и коммивояжеры  3 046

•  Игра HIP  2 001

•  Игра Go (Го)  1 926

•  Симулятор лифта  2 283

•  Программа укладки плитки  1 987

•  Генератор лабиринта  2 441

•  Проверка числового ввода  2 123

•  HEX View  2 459

•  Физический маятник  2 078

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Пример массива констант (Array of Const)



Автор: Steve

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


type
  TVarRec = record
    Data: record case 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 shr 4] + HexChar[B and 15];
  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: array of const);
var
  I: Integer;
begin
  for I := 0 to 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;





Похожие по теме исходники

Примеры работы с БД

Примеры оформления DBGrid

Пример использования DBGrid

Logic Scheme Constructor

 



Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте