Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Rechnen mit INI Dateien" (https://www.delphipraxis.net/86104-rechnen-mit-ini-dateien.html)

moelski 9. Feb 2007 07:10


"Rechnen mit INI Dateien"
 
Moin !

Ich weiss die Überschrift ist etwas :gruebel: aber naja, ich schreib mal was ich meine :zwinker:

Also, wir möchten bald in unserer Software ein Openformat definieren. Bedeutet, ein Gerät kann anhand dieses Formates Daten an unsere Anwendung senden und die werden ausgewertet. Es geht dabei um serielle Daten. Einfaches Beispiel:
$t;X1;X2<cr><lf>

Soweit noch alles klar. Nun wird in einer INI Datei definiert was die Daten denn genau bedeuten. Also in etwa so:
t Zeitweit
X1 Spannung in mV
X2 Strom in mA

Als Ergebnis kann unsere Anwendung dann die Daten visualisieren. Bis hierhin ist das noch alles recht easy. Nun möchten wir aber auch einzelne Werte miteinander verrechnen können. So würde ja z.B. X1 * X2 die Leistung (W) ergeben. Oder der Strom über die Zeit gesehen die Ladung mAh.

Da ergeben sich aber nun folgende Fragen.
1) Wie gibt man in einer INI Datei solche Berechnungen am sinnvollsten an? Als String nach dem Motto "X3 = X1 * X2"?
2) Wie wertet man sowas in seiner Anwendung am besten aus? Gibts für sowas bestehende Units die man verwenden könnte?
3) Wie macht man das am geschicktesten mit den Variablen im Programm? Weil angenommen ich schreib in die INI X1 * X2. Dann muss ja die Anwendung erstmal ermitteln was X1 und X2 denn genau ist (also was sind die entsprechenden Variablen im Programm). Man müsste da also einen Wust von Überprüfungen vornehmen, oder liege ich da falsch? Wie kann man sowas am besten lösen?

Vielleicht hat ja jemand ne brauchbare Idee :coder2:

oki 9. Feb 2007 08:00

Re: "Rechnen mit INI Dateien"
 
Hi,

ganz gerafft hab ich es noch nicht, aber hier mal ein Ansatz für ne Inni.

Jede Berechnung bekommt einen eindeutigen Bezeichener. Dass kann in deinem Beispiel $t sein. damit machst du eine Sektion auf:
[$t]

Die Werte werden dann als Einträge gespeichert.
[$t]
X1=1
X2=3

Willst du eine Formel abspeichern, dann bleibt dir imho nichts anderes übrig als einen eigenen Interpreter zu schreiben. X1 und X2 können an Hand der einträge erkannt werden. Die mathematischen Zeichen mußt du selber erkennen (* / ...).

[$t]
X1=1
X2=3
Formel=X1*X2

[$..]
...

Wie flexibel du nun das Lesen gestaltest bleibt dir überlassen. Entweder du kennst die Parameter, dann kannst du mit ReadFloat('$t', 'X!', 0) , readInteger ... direkt auf die Variablen zugreifen odere du liest sie gesamte Section und zerlegst alles einzeln.

Ich hoffe ich konnte etwas helfen,

Gruß oki

moelski 9. Feb 2007 08:09

Re: "Rechnen mit INI Dateien"
 
Moin !

Ok, ich lese aus deiner Antwort das ich das wirklich alles parsen / interpretieren muss. Herrje das wird aber ein Akt ...
Nuja muss ich dann wohl durch.

Zitat:

ganz gerafft hab ich es noch nicht,
Ok, ich erkläre es nochmal kurz.

Die INI Datei beschreibt die Daten die über die serielle Schnittstelle reinkommen.
Also in der INI steht dann z.B.
$t = Zeit mit der Einheit Sekunden
X1 = Spannung in mV
X2 = Strom in mA
getrennt sind die einzelnen Werte durch ";"

Nun kann also ein Gerät einen String an unsere Anwendung senden der dann so aussehen kann:
$10;12030;1250<cr><lf>

Das würde unser Prog dann so interpretieren:
Timestamp ist 10 Sekunden
12,030 Volt
1,250 Ampere

So und dann kämen eben die berechneten Werte die wir in der INI definieren möchten.
Als Bsp: X1 * X2

Unser Prog muss dann also 12,030 Volt * 1,250 Ampere rechnen und das ergibt 15,0375VA bzw. Watt.

Und die Frage ist eben (aber das hast du ja schon beantwortet) wie man am geschicktesten diese Formeln hinterlegen kann in einer INI und wie die Anwendung das am besten umrechnen / umsetzen kann.

yörsch 9. Feb 2007 09:26

Re: "Rechnen mit INI Dateien"
 
... eine verschlimbesserung :

[$t]
X1=1
X2=3
X3=Formel1
Formel1=X1*X2

[Dimensionen]
X1 = V
X2 = mA
X3 = W
...

oki 9. Feb 2007 14:26

Re: "Rechnen mit INI Dateien"
 
Hi yörsch,

wenn schon verschlimmbessern, dann vollständig:

[Berechnung1]
$t=1
X1=1
DimensionenX1=V
X2=3
DimensionenX2=mA
X3=Formel1
DimensionenX3=W
Formel1=X1*X2

[nächster Eintrag]
....

Somit bleibt alles in seiner Rubrik. Der nächte Berechnungseintrag hat sonst seine Probleme mit den Dimensionen.

Um das Thema mit dem Parser zu umgehen; Muß die Formel in die Ini?

gruß oki

fkerber 9. Feb 2007 21:31

Re: "Rechnen mit INI Dateien"
 
Hi!

Sind die möglichen Formeln vorher bekannt?

Dann wäre es ja ein einfaches, die Formeln als Funktionen zu definieren und dann nur in der Ini-Datei zu vermerken, welche Funktion aufzurufen ist...


Ciao, Frederic

DGL-luke 9. Feb 2007 22:01

Re: "Rechnen mit INI Dateien"
 
man kannm auch den Hier im Forum suchenHAM Parser oder den Hier im Forum suchenecqp (beide von Dax) verwenden...


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