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:
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;
nur leider motzt er dann bei der Deklaration der Konstanten, Plus wäre ein Extended und kein TProcTwoValOperation.
wie muss das richtig gehen?
geht es so überhaupt?