Re: Der HAM-Parser
Hab deinen Parser mal für 2 kleinere Projekte eingesetzt.
Mir ist dabei auf gefallen: - Der parser abeitet schnell ( Rechnungen in 15s :thumb: ) - Das mit dem Variablen hinzufügen ist etwas gewöhungs bedürtig. Es sollte vieleicht noch eine funktion geben wie
Delphi-Quellcode:
oder ein procedure die eine variable mit einen wert setzt und sollte diese noch nicht erstellt sein diese auch erstellt.
function isvarset(name: string): boolean;
begin if Parser.VariableByName[name]<> nil then begin result:=true; end else begin result:=false; end; end; Was mich noch interessieren würde was genau ist das x86-Assembler-Plugin ? :gruebel: |
Re: Der HAM-Parser
15s? War das ein Tippfehler oder ironisch?
|
Re: Der HAM-Parser
Zitat:
Zitat:
Zitat:
|
Re: Der HAM-Parser
Zitat:
oh :mrgreen: hab doch glatt vergessen zu schreiben das es nicht eine rechung war sondern 512² Rechnungen und nicht grade einfache rechnungen. |
Re: Der HAM-Parser
Zitat:
|
Re: Der HAM-Parser
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Nee alle AVs hab ich heute aus dem prog verbannt. Naja ist nach nicht ganz fertig aber was anzeigen kann. cos(z*12)/(2*(z*6.28+1)) , tan(x*y) oder pi+x+y+z-3 sind ganz nett |
Re: Der HAM-Parser
Zitat:
Zitat:
|
Re: Der HAM-Parser
Zitat:
|
Re: Der HAM-Parser
Hallo.
Habe gerade noch ein Problem festgestellt! Folgende Funktion geht tadellos: x^2+1 Jedoch macht folgende Probleme: x^(2)+1 Es wird stattdessen die Funktion "x^3" verwendet! Wie kann ich das Problem am besten umgehen? Mein Code für die Operatorendefinition lautet so:
Delphi-Quellcode:
:hi:
class procedure THAMSimpleOperators.RegToParser(Parser: THAMParser);
begin with Parser do begin THAMSimpleOperators(AddOperator('+', otBinary, 1, Self)).fType := 1; THAMSimpleOperators(AddOperator('-', otBinary, 1, Self)).fType := 2; THAMSimpleOperators(AddOperator('*', otBinary, 2, Self)).fType := 3; THAMSimpleOperators(AddOperator('/', otBinary, 2, Self)).fType := 4; THAMSimpleOperators(AddOperator('^', otBinary, 3, Self)).fType := 10; THAMSimpleOperators(AddOperator('-', otunaryPrefix, 1, Self)).fType := 0; THAMSimpleOperators(AddOperator('+', otunaryPrefix, 1, Self)).fType := 20; // change EvalDir from LeftToRight(2^2^3 -> (2^2)^3) to RightToLeft(2^2^3 -> 2^(2^3)) for the Power-Operator OperatorByName['^'].EvalDir := edRightToLeft; end; end; procedure THAMSimpleOperators.Call(const Args: THAMVariableArray; const Result: THAMVariable); begin case fType of 1: Result.Value := Args[0].Value + Args[1].Value; 2: Result.Value := Args[0].Value - Args[1].Value; 3: Result.Value := Args[0].Value * Args[1].Value; 4: Result.Value := Args[0].Value / Args[1].Value; 10: Result.Value := Power(Args[0].Value, Args[1].Value); 0: Result.Value := -Args[0].Value; 20: Result.Value := Args[0].Value; end; end; |
Re: Der HAM-Parser
Neue Version in der das nicht mehr passieren sollte ist hochgeladen..
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz