AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Paramter in Stringlist berechenen

Ein Thema von burn · begonnen am 9. Apr 2003 · letzter Beitrag vom 11. Apr 2003
Antwort Antwort
burn

Registriert seit: 9. Apr 2003
80 Beiträge
 
Delphi 5 Professional
 
#1

Paramter in Stringlist berechenen

  Alt 9. Apr 2003, 16:55
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
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2
  Alt 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
  Mit Zitat antworten Zitat
burn

Registriert seit: 9. Apr 2003
80 Beiträge
 
Delphi 5 Professional
 
#3

Zusatz-Hinweise

  Alt 10. Apr 2003, 09:40
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
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#4
  Alt 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') = 'formelthen
    / ...

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 .
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5
  Alt 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 ).

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!)
  Mit Zitat antworten Zitat
burn

Registriert seit: 9. Apr 2003
80 Beiträge
 
Delphi 5 Professional
 
#6

Hört sich nach viel Arbeit

  Alt 11. Apr 2003, 08:06
Hallo ..

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

Gruss burn
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 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