Einzelnen Beitrag anzeigen

Benmik

Registriert seit: 11. Apr 2009
542 Beiträge
 
Delphi 11 Alexandria
 
#1

Funktionen als Felder einer Klasse

  Alt 13. Sep 2017, 16:43
Folgendes Szenario:
Delphi-Quellcode:
type
  TFunk = function(Wert:integer):string;

TIstwas = class(TObject)
  FZahlZuText:@TFunk;
end;

TMachwasListe = class(TObjectList<TIstwas>)
end;

procedure TuWas;
var Istwas:TIstwas;Text:string;
begin
  ...
  Istwas := TIstwas.Create;
  Istwas.FZahlZuText := @Funkt;
  MachwasListe.Add(Istwas);
  Text := MachwasListe[0].FZahlZuText(5);
end;

function Funkt(Wert:integer):string;
begin
  Result := IntToStr(Wert);
end;
Das funktioniert einfach nicht, weil der Parameter nicht an die Funktion weitergegeben wird. Ich habe alles Mögliche probiert, unter anderem "of object" (Methodenzeiger?). Der Parameter funktioniert nicht oder es gibt eine Zugriffsverletzung, wenn "Result" in der Funktion zugewiesen wird.
Was funktioniert, istprocedure Funkt(const Wert:integer;var Result:string , aber auch nur in der const/var Kombination. Ich bin mir sicher, dass den alten Hasen das alles klar ist, kann mir einer das mal erklären?
  Mit Zitat antworten Zitat