![]() |
Funktionen hinterlegen (wie Events)
Hi...
Ich habe einige Funktionen mit exakt gleichen Parameterlisten. (konkret geht es um einen Mathe-Parser^^) zur einfacheren Überprüfung habe ich mir folgendes System überlegt: Ich hinterlege zu jedem Operator die Funktion, tue das dann in einen Array und muss dann nur noch alles durchgehen, mir das richtige raussuchen und die funktion aufrufen. konkret sähe das dann in etwa so aus:
Delphi-Quellcode:
nur leider motzt er dann bei der Deklaration der Konstanten, Plus wäre ein Extended und kein TProcTwoValOperation. :(
type
TProcTwoValOperation = function (Val1, Val2: Extended): Extended; TTwoValOp = record Proc: TProcTwoValOperation; Name: String; end; function Plus: TProcTwoValOperation; const cTwoValOperations: array [1..1] of TTwoValOp = ( (Proc: Plus; Name: '+') ); implementation function Plus(Val1, Val2: Extended): Extended; begin Result:=Val1+Val2; end; function Rechne(Op: String; Params: array of Extended): Extended; var i:Integer; begin if Length(Params)=2 then for i:=Low(cTwoValOperations) to High(cTwoValOperations) do if cTwoValOperations[i].Name=Op then begin Result:=cTwoValOperations[i].Proc(Params[0],Params[1]); Break; end; end; wie muss das richtig gehen? geht es so überhaupt? |
Re: Funktionen hinterlegen (wie Events)
Hi,
statt
Delphi-Quellcode:
sollte es
function Plus: TProcTwoValOperation;
Delphi-Quellcode:
heißen.
TProcTwoValOperation = function (Val1, Val2: Extended): Extended;
|
Re: Funktionen hinterlegen (wie Events)
Zitat:
aber ich muss dann ja Plus als so eine Funktion deklarieren.... |
Re: Funktionen hinterlegen (wie Events)
Zitat:
Delphi-Quellcode:
heißen, also genau so, wie deine Funktion auch im implementation Abschnitt definiert ist.
function Plus(Val1, Val2: Extended): Extended;
Was du deklariert hast ist eine Funktion, die keine Parameter hat und einen Rückgabewert vom Typ TProcTwoValOperation zurückliefert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 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-2025 by Thomas Breitkreuz