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

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

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

Code:

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 < 6do

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.

 

 

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

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

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

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


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