Die einzige, saubere Lösung ist, die Routine in eine Klasse zu packen und dann eine Instanz davon zu erzeugen.
Der Grund, warum man nicht einfach eine reguläre Prozedur in eine Methode casten kann, ist, dass bei der Methode immer ein impliziter Self-Parameter als erstes Argument übergeben wird.
Delphi-Quellcode:
type
TFoobar = class
procedure SayHello(Name: String);
end;
procedure TFoobar.SayHello(Name: String);
begin
WriteLn("Hello, ", Name);
end;
wird intern zu
Delphi-Quellcode:
type
TFoobar = class
end;
procedure TFoobar_SayHello(Self: TFoobar, Name: String);
begin
WriteLn("Hello, ", Name);
end;
Wenn du einfach castest, dann steht in den Parametern also nur Murks.