Была ли у кого-то после изучения материала по массивам мысль: "а можно ли создать массив функций?":?:
Даже если и не была, я все равно расскажу как это сделать.
Начнем с того, что можно создавать тип-функцию (процедуру):
Code: Select all
type
MyProc = procedure();
Code: Select all
type
MyProc = procedure(Text: string);
Code: Select all
var
ProcArray: array [0..1] of MyProc;
Code: Select all
procedure First(Text: string);
begin
AddToSystemJournal('Первая процедура: '+Text);
end;
procedure Second(Text: string);
begin
AddToSystemJournal('Вторая процедура: '+Text);
end;
Code: Select all
ProcArray[0]:= @First;
ProcArray[1]:= @Second;
Code: Select all
type
MyProc = procedure(Text: string);
var
ProcArray: array [0..1] of MyProc;
procedure First(Text: string);
begin
AddToSystemJournal('Первая процедура: '+Text);
end;
procedure Second(Text: string);
begin
AddToSystemJournal('Вторая процедура: '+Text);
end;
begin
ProcArray[0]:= @First;
ProcArray[1]:= @Second;
ProcArray[0]('1'); // = First('1')
ProcArray[0]('2'); // = First('2')
ProcArray[1]('3'); // = Second('3')
end.