Zitat von
FriFra:
Davon ausgehen kann man eben nicht,
[...]
Ich meine die Adresse der Funktionsvariablen, nicht deren Inhalt
OK, deutlicher...
Dein Code macht das, was Du willst (aber nur, weil es eine Funktionsvariable ist...)
Code:
function Foo(): Boolean;
var
Bar: procedure();
begin
Bar := nil;
Result := (@Bar <> nil);
end;
function Bar(): Boolean;
var
Foo: Pointer;
begin
Foo := nil;
Result := (@Foo <> nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Foo() then
ShowMessage('foo');
if Bar() then
ShowMessage('bar');
end;
Das ist eigentlich inkonsistent, da ein Funktionszeiger auch nur ein Pointer ist (somit kann @Foo zu Missverständnissen führen - ist jetzt die Adresse der Variablen oder der Inhalt gemeint).
.nico