AGB  ·  Datenschutz  ·  Impressum  







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

boolesche Formel ausrechnen

Ein Thema von Dezipaitor · begonnen am 12. Sep 2004 · letzter Beitrag vom 23. Sep 2004
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#11

Re: boolesche Formel ausrechnen

  Alt 12. Sep 2004, 22:34
Zitat von xineohp:
@Nothine: funzt das auch mit records?
nein, bzw. um es richtig zu stellen, nur bei records mit nur einem feld, mehrere felder scheint er nicht mehr zu prüfen, aber z.B.
Delphi-Quellcode:
//in verbindung mit obigem post
var D: string;
    C: Integer;
    A,B: record
      X: string;
    end;
const F: array[Boolean] of string[5] = ('False','True');
begin
  A.X := 'bla'; B.X := 'möp'; C := 5; D := 'tee';
  Edit1.Text := F[CheckTrue(A,B,C,D)];
end;
funktioniert... nur wenn ich beispielsweise noch ein record-feld Y vom typ integer hinzufüge und unterschiedliche werte zuweise, spuckt er trotzdem true aus... [Edit2] da er nur das erste feld prüft, DAS wird aber korrekt ausgewertet... [/Edit2]

//Nachtrag: ich hab es grad mit sowohl einer eigenen von TObject abgeleiteten klasse als auch mit TStringList probiert, aber da bekomm ich nur access violations, dementsprechend dürfte diese (zugegeben merkwürdige ) funktion nur auf einfache datentypen anwendbar sein...

//Und noch ein Edit: der vergleich zwischen A und B kann NUR dann positiv ergeben, wenn sie vom selben typ sind... also A: Byte = 1 und B: Integer = 1 is nich, da sagt er gnadenlos FALSE
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#12

Re: boolesche Formel ausrechnen

  Alt 13. Sep 2004, 06:24
Ich habe schon einen boolschen Parser, allerdings funktioniert er nur mit Numeralen Werten, auch Fließkomma. Der ist schon fertig und wäre bereit zur Veröffentlichung, ist aber Teil eines größeren Projekts. Es werden Klammern, not, or, and und xor Unterstützt. Wenn du Interesse daran hast, bitte per PN melden, vielleicht kannst du das ganze ja für deinen Gebrauch umschreiben.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#13

Re: boolesche Formel ausrechnen

  Alt 13. Sep 2004, 09:32
Hab vergessen zu erwähnen :
ich habe mal an mehrere Stellen im Internet gefragt:

http://spotlight.de/zforen/dlp/m/dlp...425-19161.html
http://www.delphi-forum.de/viewtopic...asc&highlight=

Allerdings gibt es hier derzeit die inhaltlich besten Antworten - Also VIELEN DANK


@Nothine: Danke für dein Bemühen,
allerdings hatte ich dazu gesagt :
Zitat:
es war eigentlich so gedacht, dass die formel in einem [b]string[b] steckt,
und dann ausgewertet werden muss.
Zitat von xineohp:
@Dezipaitor: Um was für Datentypen soll es sich hier eigentlich handeln? Nur string, double, integer, etc. oder auch Klassen und records?
Gute frage, und thx dass du sie gestellt hast:
Es geht nur um die einfachsten Datentypen ohne Pointer. Also
String, char, Integer, Boolean

Zitat von xineohp:
moin,

Bastel dir doch einen Parser. (was fertiges kenn ich nicht)

EDIT: Wobei das mit den unterschiedlichen Datentypen ein Problem darstellen könnte
Die Ironie ist : Ich habe ja einen Parser gebaut. siehe hier
Allerdings wäre es dann wirklich "mit Kanonen auf Spatzen geschossen", wobei es kein Problem darstellt, die Formel in ihre Bestandteile zu zerlegen : Also (,),A,=,'tee' usw.


Zitat von Nothine:
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
Das Problem besteht auch nicht direkt in der Auswertung der Vergleiche (A = B), sondern in der Klammerung gepaart mit den Operatoren AND , OR und NOT (mehr gibts nicht)

Ich habe ja alle Variablen in einer Liste :
(Pseudocode)
StringList.Objects['A'] = ^record
[Variablenname : String;] (nicht notwendig bei stringlist)
Variablentyp : <enumeration> (typ_integer,t_string usw)
Variableninhalt : String
end;

der inhalt ist immer string, kann aber mit hilfe des angegeben Typs konvertieren.

Zitat von woki:
Hi,

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

Free Pascal Script
Thx für den Link. Das scheint ja sehr interessant zu sein.

Tatsache ist, dass ich hier noch etwas nicht erwähnt habe:

Die Operatoren AND, OR, NOT sowie die Vergleichsoperatoren =,<> müssen austauschbar sein durch
"&", "|", "!" sowie "==","!=" und
"==","/="

Das geht wohl am besten, wenn man diese als Konstanten definiert.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#14

Re: boolesche Formel ausrechnen

  Alt 13. Sep 2004, 09:41
Zitat von Dax:
Ich habe schon einen boolschen Parser, allerdings funktioniert er nur mit Numeralen Werten, auch Fließkomma. Der ist schon fertig und wäre bereit zur Veröffentlichung, ist aber Teil eines größeren Projekts. Es werden Klammern, not, or, and und xor Unterstützt. Wenn du Interesse daran hast, bitte per PN melden, vielleicht kannst du das ganze ja für deinen Gebrauch umschreiben.
wenn das funkz, dann wäre es meine rettung.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#15

Re: boolesche Formel ausrechnen

  Alt 13. Sep 2004, 11:36
@Nothine, ?????? was soll das bringen die Speicheradressen der Variablen zu vergleichen um deren Inhalte zu vergleichen ? Dein Code lösst rein garnichts und kann nur falsche Resultate bringen. Wer sagt das bei einem Vergleich wie A <> B, beides distinct Integer Variablen, das in A und auch B nicht 3 drinnenstehen darf. Sie sind also gleich, aber bei Vergleich @A <> @B, also der Speicheradressen, wird natürlich TRUE rauskommen müssen.

Zudem wenn man nun eine ganz andere Formel auswerten möchte so nützt deine Ponter Methode wiederum nichts.
Deinen Beitrag halte ich für unkonstruktiv und im Grunde falsch.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#16

Re: boolesche Formel ausrechnen

  Alt 13. Sep 2004, 13:40
Zitat von negaH:
@Nothine, ?????? was soll das bringen die Speicheradressen der Variablen zu vergleichen um deren Inhalte zu vergleichen ? Dein Code lösst rein garnichts und kann nur falsche Resultate bringen. Wer sagt das bei einem Vergleich wie A <> B, beides distinct Integer Variablen, das in A und auch B nicht 3 drinnenstehen darf. Sie sind also gleich, aber bei Vergleich @A <> @B, also der Speicheradressen, wird natürlich TRUE rauskommen müssen.

Zudem wenn man nun eine ganz andere Formel auswerten möchte so nützt deine Ponter Methode wiederum nichts.
Deinen Beitrag halte ich für unkonstruktiv und im Grunde falsch.

Gruß Hagen
ich danke dir für diese netten worte und möchte dich freundlichst darauf hinweisen dass ich den oben geposteten code, von dem ich auch, wie oben nachzulesen, selber gesagt habe das er merkwürdig ist, natürlich vorher getestet habe, wobei ich dich, auch wenn dich das verwundern mag, darauf hinweisen möchte, dass dieser code bei mir funktioniert! du brauchst mir nicht zu erzählen das ein pointer auf eine speicheradresse und nicht auf den inhalt einer variablen verweist, dennoch ergibt der code, unter verwendung von lokalen variablen, ein FALSE bei z.B. A=3 und B=2 und ein TRUE bei A=3 und B=3. anstatt den fakt, das ich es selber ausprobiert habe, zu ignorieren, und von vornherein zu sagen, dass mein beitrag unkonstruktiv und im Grunde falsch sei, könntest du es lieber selber testen und mir danach verraten, warum es so ist wie es ist, denn du hast wesentlich mehr ahnung von delphi und asm als ich.

Freundlichst verbleibt,
Nothine

//Edit: ich hatte übrigens dazu geschrieben dass es nur eine anregung ist, nur so am rande bemerkt.
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#17

Re: boolesche Formel ausrechnen

  Alt 15. Sep 2004, 23:08
Jay, ich sagte ja nicht das dein Code so wie er im speziellen ist Falsche Resultate liefert. Nur das bringt uns nicht weiter, da er nur und ausschlieslich nur mit ganz exakt diesen Zahlen und Variablen funktioniert. Über gibt man der Testfunktion von anderer Programstelle her andere Variablen so wird diese Methode immer fehlschlagen. Somit stellt es Code dar der sinnlos wird da er nicht wiederverwendbar geschweige denn merhfachverwendbar ist.

Sorry das ich das so hart ausdrücken musste, aber fakt ist das er sinnlos ist und in diesem Thread eher verwirrend in eine ganz andere Richtung lenkt. D.h. meine unkorrekten Worte dir gegenüber ändern rein garnichts an dieser Tatsache.

Aber du hast Recht, und ich entschuldige mich bei dir, ich hätte es wesentlich netter, und mit größerer Rücksicht auf deine leicht verletzbaren Gefühle, formulieren sollen.

Gruß Hagen
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18

Re: boolesche Formel ausrechnen

  Alt 15. Sep 2004, 23:33
Ich glaube, ihr habt da noch was vergessen. 8) @Nothine : bei deinem Code würde ich mal den Rechner ausmachen, neu starten und sehen, ob er noch korrekt ist, glaube das nämlich nicht so recht.
Gruß
Hansa
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#19

Re: boolesche Formel ausrechnen

  Alt 16. Sep 2004, 11:17
ich denke mal es geht über das abarbeiten einer baumstruktur.

Postfix wäre ganz vielversprechend.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: boolesche Formel ausrechnen

  Alt 16. Sep 2004, 12:42
Zitat von negaH:
Deinen Beitrag halte ich für unkonstruktiv und im Grunde falsch.

Gruß Hagen
Ich möchte mal erwähnen, dass in meinen Augen der gute Wille zählt und nicht die Tatsache ob der Beitrag wirklich nützlich ist

Hatte die Entschuldigung übrigens erst beim zweiten Durchblättern gesehen, Sorry meinerseits ^^
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 19:52 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