Это то, что я нашел при создании простой машины состояний:
Ниже приведен простой пример для 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. |
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!