Ich habe eine grundlegende Frage zu einem Problem.
Statt in einer bestimmten Funktion (Schleife) X-Mal ein Case aufzurufen in welchen entschieden wird ob Func1, Func2 oder Func3 verwendet wird, möchte ich gerne zuvor (vor der Schleife) Func1 2 oder 3 einer Variablen zuweisen.
Von StackOverflow:
Delphi-Quellcode:
interface
type
TNodeFunction = function(AInput: String): String;
implementation
function Func1(AInput: String): String;
begin
result := AInput;
end;
function Func2(AInput: String): String;
begin
result := 'Fooled You';
end;
function Func3(AInput: String): String;
begin
result := UpperCase(AInput);
end;
procedure Demonstration;
var
SomeFunc, SomeOtherFunc: TNodeFunction;
begin
SomeOtherFunc = Func3;
SomeFunc := Func1;
SomeFunc('Hello'); // returns 'Hello'
SomeFunc := Func2;
SomeFunc('Hello'); // returns 'Fooled You'
SomeOtherFunc('lower case'); // returns 'LOWER CASE'
end;
Mit dem obigen beispiel funktioniert das wunderbar. Aber was, wenn man Func1 2 oder 3 auch im
Unit-Kopf deklariert hat? Wieso funktioniert das dann nicht mehr?
Der Fehler lautet
Zitat:
[dcc32 Fehler] uTest.pas(257): E2009 Inkompatible Typen: 'Reguläre Prozedur und Methodenzeiger'