Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Paramter in Stringlist berechenen (https://www.delphipraxis.net/3974-paramter-stringlist-berechenen.html)

burn 9. Apr 2003 16:55


Paramter in Stringlist berechenen
 
Hallo alle miteinander,

ich habe in einer Stringlist eine variable Anzahl von Zeilen
die in etwa ungefähr so aufgebaut sind:

a=300
b=200
h=100
x=2*(a+b)
z=5+6*y
y=h+a

Ja und nun kommt mein Problem:

Wie schaffe ich es, das im Endeffekt nur noch Zahlen
in der Stringlist stehen :

a=300
b=200
h=100
x=1000
z=2405
y=400

mit ner Komponente kann ich im Moment sowas wie 5+6*400
berechnen ..
Ne Idee war mit String-Replace die Variablen zu ersetzen ...
Aber wie ??? Alle Parameter in der Liste können verschachtelt sein
(sowie z) ... Die Beispiele sind dabei noch ziemlich harmlos ...
Im Endeffekt können ca. 20 "berechnte Paramter" in einer weiteren
Berechnung gebraucht werden ...

Tja und such ich irgendwelche Ideen und hoffe auf Eure Hilfe..
Vielen Dank im Vorraus ..

Grüsse Steve

oki 10. Apr 2003 08:18

Hi,

ich hab noch nicht ganz verstanden was das da soll.
Warum schreibst du nicht gleich die "Zeilen"-Ergebnisse in die Items?

Vielleicht kannst du noch ein paar zusatzinfos liefern.

Gruß oki

burn 10. Apr 2003 09:40

Zusatz-Hinweise
 
Hallo Oki,

will das für dich nochmal etwas ausweitern:

Also vom Prinzip her will ich eine Art Interpreter schreiben...
Die vorliegenden Parameter sind nur aus einer Txt-file schon
gefiltert ... Einige Parameter sind in der zu parsenden Txt-Datei
als Zahlen angegeben z.B. a= 300 b=400 ... weiter unten werden
dann andere Parameter mit gegebenen berechnet .. und diese berechnten
Parameter dienen im Endeffekt zur Berechnung von Punkten die ich im Endeffekt alle zeichnen will ... Also hab eigentlich das Problem
wie aus der String-Anweisung z.B. (a+b)*2 den Double-Wert Bsp. 1400
bekomme ... zusätzlich macht mir die Verschachtelung der Parameter Probleme, so könnten z.B. einfach ausgedückt etwa solche Lines in der Stringlist stehen:

a=200
b=100
az= 5
bz=6
c=ar+br
ar=a+az
br=b+bz

s=2*c-f-az/bz+br+ar;
f=ar/br;

Ja und am Ende will ich halt alle Ergebnisse der Parameter haben ..
Hilft dir das weiter ???

Gruss burn

X-Dragon 10. Apr 2003 10:17

Dafür müsstes du dann ja zuerst einzelnd die Einträge rausfiltern wo Berechnungen durchgeführt werden müssen, dann kontrollieren ob diese Zeilen die für die Berechnung notwendig sind schon berechnet sind und die Buchstaben der Zeilen innerhalb der Berechnung nach und nach durch Zahlenwerte aus den entsprechenden Zeilen ersetzen.

Also grunsätzlich würde ich sagen am besten erstmal:
Delphi-Quellcode:
for i := 0 to stringliste.Count -1 do
begin
  txt = Copy(stringliste[i],Pos('='),Length(stringliste[i]-1Pos('='));
  if StrToIntDef(txt,'formel') = 'formel' then
    / ...

end;
die Formeln rausfiltern und anschliessend aus diesen die benötigten Buchstabenkombinationen rausfiltern und in einer weiteren Schleife kontrollieren ob diese Werte schon berechnet sind und entsprechend ersetzen. Wenn keine Buchstaben mehr in der Formel sind kann diese dann ja berechnet werden, ansonsten kann ja erstmal die nchste Zeile kontrolliert werden und zum Schluss das ganz nochmal vor vorne bis alles berechnet ist :).

oki 10. Apr 2003 11:11

Hi burn,

ich schließe mich X-Dragon an.

Das Problom, welches du haben wirst ist folgendes:

Du kannst nicht einfach einen String nehmen und diesen mit einem Hieb in eine adäquate Formel wandeln. Es läuft schon darauf hinaus was du selber sagst - einen eigenen Interpreter schreiben.

Erst mal mußt du alle zulässigen Zeichen definieren und bestimmen welche mathematische Entsprechung gilt.
Danach wie X-Dragon zeigt deinen String zerlegen (alles relevante filtern) und entsprechend deiner mathematischen Definition berechnen.

Die Klammerthematik kannst du einfach lösen. Wenn du davon ausgehst, dass jede Zeileninformation in sich matthematisch korrekt ist, dann bilde jede "Zeilenberechnung einzeln (also als ob in Klammern) und die Probleme sind weg. Nach dem Motto: Eine Klammerung mehr schadet nicht! (hält nur besser :hello: ).

Sollte es in der Verkettung der Zeileninformationen Klammerungsrelevante Berücksichtigungen geben jast du aber ein Problem. Da helfen dann nur noch allgemein verbindliche Regeln die du vorgibst oder berücksichtigst.

Gruß oki

(Ich persönlich wimmel solche Projekte ganz schnell ab!)

burn 11. Apr 2003 08:06

Hört sich nach viel Arbeit
 
Hallo ..

hört sich irgendwie nach ziemlich viel Arbeit an.. :cry:
Danke euch beiden trotzdem für die Tipps ..

Gruss burn


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 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