![]() |
Funktionen als Felder einer Klasse
Folgendes Szenario:
Delphi-Quellcode:
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.
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; Was funktioniert, ist
Delphi-Quellcode:
, 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?
procedure Funkt(const Wert:integer;var Result:string
|
AW: Funktionen als Felder einer Klasse
Lass mal die beiden "@" weg...
|
AW: Funktionen als Felder einer Klasse
Pointer-Typen werden nicht mit @ deklariert, sondern mit ^
Und Zitat:
Also
Delphi-Quellcode:
muß darüber oder es muß darüber wenigstens eine Forward-Deklaration dafür geben.
function Funkt
|
AW: Funktionen als Felder einer Klasse
Jetzt funktioniert es natürlich. Vielen Dank euch beiden.
Warum funktioniert eigentlich die Prozedur mit dem var-Parameter? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz