Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Reguläre Prozedur in Methodenzeiger umwandeln

  Alt 24. Mai 2017, 16:00
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.
  Mit Zitat antworten Zitat