Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

Если вы хотите за один раз передавать целую запись, установите на входе ваших функций/процедур тип 'array of const' (убедитесь в правильном приведенни типов). Это идентично 'array of TVarRec'. Для получения дополнительной информации о системных константах, определяемых для TVarRec, смотри электронную справку по Delphi.

<p>Указатели</p><p>Указатель на функцию I</p>

Delphi 1

Это то, что я нашел при создании простой машины состояний:

Ниже приведен простой пример для Borland Delphi, использующий указатели функций для управления программным потоком. Просто создайте простую форму с единственной кнопкой и скопируйте код из Unit1 во вновь созданный модуль. Добавьте к проекту Unit2 и скомпилируйте проект. Дайте мне знать, если у вас возникнут какие-либо проблемы.

interface

uses

 SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls;

type

 TForm1 = class(TForm)

  Button1: TButton;

  procedure Button1Click(Sender: TObject);

 private { Private declarations }

 public { Public declarations }

 end;

var

 Form1: TForm1;

 CurrProc : LongInt;

 MyVal : LongInt;

implementation

uses Unit2;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var

 NewProc : LongInt;

 MyString : string;

begin

 CurrProc := 2; { начальная точка в таблице методов }

 MyVal := 0; { вспомогательная переменная }

 NewProc := 0; { возвращаемое значение для следующего индекса в таблице методов }

 while CurrProc < 6 do begin

{ выполняем текущий индекс в таблице методов и получаем следующую процедуру }

  NewProc := ProcTable[CurrProc](MyVal);

  { просто показываем значения NewProc и CurrProc }

  FmtStr(MyString, 'NewProc [%d] CurrProc [%d]', [NewProc, CurrProc]);

  MessageDlg(MyString, mtInformation, [mbOK], 0);

  { присваиваем текущую процедуру возвращаемой процедуре }

  CurrProc := NewProc;

 end;

end;

end.

{ Это простой пример, определяющий массив указателей на функции }

interface

type

 { определяем Procs как функцию }

 Procs = function(var ProcNum : LongInt): LongInt;

var

 { объявляем массив указателей на функции }

 ProcTable : Array [1..5] of Procs;

 { определения интерфейсов функций }

function Proc1(var MyVal : LongInt) : LongInt; far;

function Proc2(var MyVal : LongInt) : LongInt; far;

function Proc3(var MyVal : LongInt) : LongInt; far;

function Proc4(var MyVal : LongInt) : LongInt; far;

function Proc5(var MyVal : LongInt) : LongInt; far;

implementation

uses Dialogs;

function Proc1(var MyVal : LongInt) : LongInt;

begin

 MessageDlg('Процедура 1', mtInformation, [mbOK], 0);

 Proc1 := 6;

end;

function Proc2(var MyVal : LongInt) : LongInt;

begin

 MessageDlg('Процедура 2', mtInformation, [mbOK], 0);

 Proc2 := 3;

end;

function Proc3(var MyVal : LongInt) : LongInt;

begin

 MessageDlg('Процедура 3', mtInformation, [mbOK], 0);

 Proc3 := 4;

end;

function Proc4(var MyVal : LongInt) : LongInt;

begin

 MessageDlg('Процедура 4', mtInformation, [mbOK], 0);

 Proc4 := 5;

end;

function Proc5(var MyVal : LongInt) : LongInt;

begin

 MessageDlg('Процедура 5', mtInformation, [mbOK], 0);

 Proc5 := 1;

end;

Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT