Einzelnen Beitrag anzeigen

BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Wie kann ich das parsen??

  Alt 4. Mai 2013, 18:13
Ich versuche schon seit einiger Zeit etwas zu parsen das verschiedene Schreibweisen haben kann und komme auf keinen gemeinsamen Nenner. Vielleicht könnt ihr mir dabei helfen.
Es geht darum folgende Schreibweisen für eine Formel zu parsen, wobei es aber auch vorkommen kann das teile nicht in die Formel eingesetzt werden müssen. Das es hier letztendlich um Koordinaten geht ist unerheblich! Es zählt nur das die Schreibweise/Form erhalten bleibt
Vorgegeben ist:
A=4
B=3
C=9
D=1

Nun kann dies auf unterschiedlichste Art und Weise in eine Formel eingesetzt werden:
Zitat:
Methode1:
Original:
N 48° 52.(A)(A-1)(A+1)
E 008° 21.(A)(A+5)(A-4)
Zwischenergebnis :
N 48° 52.(4)(4-1)(4+1)
E 008° 21.(4)(4+5)(4-4)
Am Ende soll es so aussehen:
N 48° 52.435
E 008° 21.490
Zitat:
Methode2:
Original:
N 49 (A)(B)(C)(D)(A)
E 008 (B)(A).(D)(D)(C)
Zwischenergebnis :
N 49 (4)(3)(9)(1)(4)
E 008 (3)(4).(1)(1)(9)
Am Ende soll es so aussehen:
N 49 43.914
E 008 34.119
Zitat:
Methode3:
Original:
N 49° 29.(2*A)+(B+C)+13
E 08° 16.(2*A)+(2*B)+(2*C)-10
Zwischenergebnis :
N 49° 29.(2*4)+(3+9)+13+300
E 08° 16.(2*4)+(2*3)+(2*9)-10+250
Am Ende soll es so aussehen:
N 49° 29.333 = Formel wurde berechnet 8+12+13+300
E 08° 16.272
Wie ich aus dem Original das Zwischenergebnis bekomme weiß ich. Das funktioniert. Aber wie ich mit den verschiedenen Formen des Zwischenergebnisses umgehen soll weiß ich nicht.

Methode 1 und 3 muss berechnet werden und Methode 2 nicht.
Ich nutze den cyMathParser zum berechnen der Formeln. Methode 3 kann ich einfach berechnen ohne etwas zu ändern. Die kann ich also so in den cyMathParser schicken.
Mit Methode 2 geht das natürlich nicht, da müssten eigentlich nur die klammern entfernt werden.
Und Methode 1 ist eine Mischung aus Methode1 und Methode 2. Ein Teil muss berechnet werden und ein anderer Teil muss nur die Klammer entfernt werden.

Wie kann ich die verschiedenen Methoden unterscheiden und darauf reagieren damit das Ergebnis immer stimmt? Hat da jemand eine Idee??

Geändert von BBoy ( 4. Mai 2013 um 20:34 Uhr)
  Mit Zitat antworten Zitat