Здрасти МиГ-31,
Виждам, че си добър, поздравления за това.
Ето как би станало на Delphi, абе в предишния отговор
съм изпуснал една декларация сега я показвам (думата с Bold):
.
.
COwner = class(CThisInstanceOwner)
.
procedure NotifyOwner; override;
.
.
Ето го сега отговора на новият въпрос. След изпълнение на
процедурата Main_Func ще видиш три съобщения в последователноста
f1, f2, f3 както искаше.
unit Unit3;
interface
procedure Main_Func;
implementation
uses Windows;
procedure printf(S: string);
begin
MessageBox(0, PChar(S), 'Caption', MB_OK);
end;
procedure f1;
begin
printf('f1');
end;
procedure f2();
begin
printf('f2');
end;
procedure f3();
begin
printf('f3');
end;
procedure Main_Func;
type
TFunc = procedure;
var
i: Integer;
FuncArray: array[0..2] of Integer;
Func: TFunc;
begin
FuncArray[0] := Integer(@f1);
FuncArray[1] := Integer(@f2);
FuncArray[2] := Integer(@f3);
for i := 0 to 2 do
begin
Func := TFunc(FuncArray);
//може и така: Func := Pointer(FuncArray)
Func;
end;
end;
end.
Чао
ПП: МиГ-31 пак имаш грешка ((void (*)())FuncArray)() трябва да, а ако не се лъжа ((void (*)())FuncArray)()... но нищо всеки допуска грешки, така се получава и аз когато бързам винаги греша.