![]() |
boolesche Formel ausrechnen
hi
gibt es irgendeine Freeware komponente oder Dokumente über Algorithmen, mit denen man Formeln in der Form F = (A = B) and ((C <> 3) or (D = 'tee')) bestimmen kann, ob F wahr oder F falsch ist? Man beachte die die Klammerprioritäten und unterschiedliche Datentypen der Variablen. Wobei der Inhalt der Variablen einfach in einer Liste steht. thx |
Re: boolesche Formel ausrechnen
Ich denke mal:
Delphi-Quellcode:
F := (A = B) and ((C <> 3) or (D = 'tee'));
if F then ShowMessage('F ist wahr') else ShowMessage)'F ist nicht wahr'); |
Re: boolesche Formel ausrechnen
:wall:
es war eigentlich so gedacht, dass die formel in einem string steckt, und dann ausgewertet werden muss. |
Re: boolesche Formel ausrechnen
Kann man einen String in einen Boolschen Ausdruck casten ???
|
Re: boolesche Formel ausrechnen
wenn es so einfach wäre, hätte ich nicht gefragt :)
|
Re: boolesche Formel ausrechnen
moin,
Bastel dir doch einen Parser. (was fertiges kenn ich nicht) EDIT: Wobei das mit den unterschiedlichen Datentypen ein Problem darstellen könnte :gruebel: |
Re: boolesche Formel ausrechnen
naja wieso eigentlich, wenn man die formeln (bzgl. klammersetzung) so auffriemelt das man jeden test auf gleichheit (oder ungleichheit) einzeln hat, müsste man doch im prinzip nur noch linke seite gegen reichte seite machen, das geht auch (oder erstrecht) in strings... stichwort dazu reguläre ausdrücke, damit bringt die formel dann sogar noch richtig was...
aber ma eben in 5 minuten würd ich sowas auch nich proggen :? |
Re: boolesche Formel ausrechnen
|
Re: boolesche Formel ausrechnen
ich weiß das sieht bescheuert aus :mrgreen: aber folgendes konstrukt funktioniert:
Delphi-Quellcode:
vielleicht hilft dir das ja weiter, wenn du es noch allgemeiner umschreiben willst :wink:
function CheckTrue(const A,B,C,D): Boolean;
const C2: Integer = 3; D2: string = 'tee'; begin Result := (Pointer(A) = Pointer(B)) and // (A = B) and ((C <> 3) or (D = 'tee')) ((Pointer(C) <> Pointer(C2)) or (Pointer(D) = Pointer(D2))); end; procedure TForm1.Button1Click(Sender: TObject); var A,B,D: string; // man kommt leider nich drumrum es vorher C: Integer; // in eine variable zu schreiben const F: array[Boolean] of string[5] = ('False','True'); //nur zur anzeige begin A := 'a'; B := 'a'; C := 5; D := 'tee'; //initialisieren Edit1.Text := F[CheckTrue(A,B,C,D)]; //das verblüffende ergebnis sehen :-D end; |
Re: boolesche Formel ausrechnen
@Dezipaitor: Um was für Datentypen soll es sich hier eigentlich handeln? Nur string, double, integer, etc. oder auch Klassen und records?
@Nothine: funzt das auch mit records? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 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