Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi boolesche Formel ausrechnen (https://www.delphipraxis.net/29658-boolesche-formel-ausrechnen.html)

Dezipaitor 12. Sep 2004 18:47


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

Die Muhkuh 12. Sep 2004 18:52

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');

Dezipaitor 12. Sep 2004 19:00

Re: boolesche Formel ausrechnen
 
:wall:

es war eigentlich so gedacht, dass die formel in einem string steckt,
und dann ausgewertet werden muss.

jfheins 12. Sep 2004 19:14

Re: boolesche Formel ausrechnen
 
Kann man einen String in einen Boolschen Ausdruck casten ???

Dezipaitor 12. Sep 2004 19:22

Re: boolesche Formel ausrechnen
 
wenn es so einfach wäre, hätte ich nicht gefragt :)

xineohp 12. Sep 2004 20:06

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:

Nothine 12. Sep 2004 20:13

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 :?

woki 12. Sep 2004 20:48

Re: boolesche Formel ausrechnen
 
Hi,

ist vielleicht mit Kanonen auf Spatzen schiessen, aber vielleicht hilft ja:

Free Pascal Script

Nothine 12. Sep 2004 21:31

Re: boolesche Formel ausrechnen
 
ich weiß das sieht bescheuert aus :mrgreen: aber folgendes konstrukt funktioniert:
Delphi-Quellcode:
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;
vielleicht hilft dir das ja weiter, wenn du es noch allgemeiner umschreiben willst :wink:

xineohp 12. Sep 2004 22:29

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.
Seite 1 von 3  1 23      

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