PureBoard
https://www.purebasic.fr/german/

Vergleichs-Ausdruck liefert keinen boolschen Wert (erledigt)
https://www.purebasic.fr/german/viewtopic.php?f=3&t=8960
Seite 1 von 1

Autor:  PureLust [ 21.06.2006 11:54 ]
Betreff des Beitrags:  Vergleichs-Ausdruck liefert keinen boolschen Wert (erledigt)

Hallo zusammen, ...

ich wollte den boolschen Rückgabewert eines Vergleichsausdrucks (z.B. "Var < 1000") innerhalb einer Berechnung verwenden.
Jedoch liefert z.B. der Ausdruck "Var < 200" als Ergebnis IMMER "200" zurück, anstatt 0 für #False bzw. 1 für #True.

Bsp:
Code:
TestValue = 800
Debug Str(TestValue)+" > 200  :  "+Str(TestValue > 200)
Debug Str(TestValue)+" = 200  :  "+Str(TestValue = 200)
Debug Str(TestValue)+" < 200  :  "+Str(TestValue < 200)

Normalerweise kenne ich das so, dass als Resultat eines solchen Ausdrucks 0 oder 1 (bzw. 0 oder -1) zurückgegeben wird.
Auch laut PB-Hilfe sollte hier True oder False zurück gegeben werden.

Habe ich da irgendwo einen Denkfehler, mache ich was falsch oder ist dies im Grunde eine PB Eigenart (bzw. ein Bug)?

Gruß, PL.

Autor:  #NULL [ 21.06.2006 12:08 ]
Betreff des Beitrags: 

laut hilfe wird 'true' bzw 'false' zurückgegeben, aber nicht #True oder #False oder 1 , -1, oder 0 ect.
boolsche operatoren geben in PB, soweit ich weiss, keine weiterverwendbaren integer zurück, wie das in C der fall ist. ( :cry: leider)

sowas geht auch nicht:
equals_counter + (a=b) --------( = equals, nicht die zuweisung)

Autor:  Green Snake [ 21.06.2006 12:18 ]
Betreff des Beitrags: 

Du kannst da ein bisschen tricksen:


Code:
TestValue = 800
Debug Str(TestValue)+" > 200  :  "+Str(0 Or TestValue > 200)
Debug Str(TestValue)+" = 200  :  "+Str(0 Or TestValue = 200)
Debug Str(TestValue)+" < 200  :  "+Str(0 Or TestValue < 200)

Autor:  PureLust [ 21.06.2006 12:46 ]
Betreff des Beitrags: 

@Green Snake:

super WA - vielen Dank !!! :allright:


Ich hatte es schon per "Str((TestValue < 200)=#True)" versucht, leider auch ohne Erfolg.

PureBasic scheint als Ergebnis also erst einen bolschen Wert zurückzugeben, wenn im Ausdruck ein logischer Operant verwentet wird.

Ist zwar ein bischen unlogisch und auch inkonsistent .... aber naja. :roll:

Auf jeden Fall erst mal vielen Dank für den Tip - nun komm' ich weiter. :allright:

Greetz & Thanks,
PureLust.

Autor:  jear [ 21.06.2006 13:43 ]
Betreff des Beitrags: 

@PureLust
Das ist schon ausführlich diskutiert worden(z.B. hier) und lässt sich zur Zeit nur durch einen Macro in PB4 lösen.

Hier noch mal ein Beispiel:
Code:
Macro Is(BooleanExpression)
  (#False Or(BooleanExpression))
EndMacro


a = 50 : Debug Is(a<60) : Debug Is(a=60) : Debug Is(a>60)
a = 60 : Debug Is(a<60) : Debug Is(a=60) : Debug Is(a>60)
a = 70 : Debug Is(a<60) : Debug Is(a=60) : Debug Is(a>60)

File.s = "Test.vob"
IsVOB.b = Is(LCase(GetExtensionPart(file)) = "vob")
Debug IsVOB


Wird hoffentlich in einer neuen Version von Fred mal in PB integriert.

Autor:  PureLust [ 21.06.2006 15:13 ]
Betreff des Beitrags: 

Hallo jear,

vielen Dank für den Link - ich habe mich da mal durchgeackert. ;)
Scheinbar wurde diese Geschichte ja von Fred nicht beachtet, da in der PB4-Final noch keine Lösung diesbezüglich integriert ist.

Naja ... wenn man sowas weiss, so kann man sich natürlich auch mit dem Macro bzw. dem oben stehenden Tip von Green Snake behelfen.

@André:
Es wäre vielleicht sinnvoll, dieses 'nicht gerade gebräuchliche' Verhalten auch in der Hilfe (z.B. bei "Variablen, Typen und Operatoren") zu erwähnen.
Für Programmierer mit Kenntnissen aus anderen Sprachen (die es also anders gewöhnt sind) würde dies vermutlich hilfreich sein.

ThanX an Alle die geholfen haben, :allright:
PureLust.

Autor:  Andre [ 24.06.2006 02:38 ]
Betreff des Beitrags: 

PureLust hat geschrieben:
@André:
Es wäre vielleicht sinnvoll, dieses 'nicht gerade gebräuchliche' Verhalten auch in der Hilfe (z.B. bei "Variablen, Typen und Operatoren") zu erwähnen.
Für Programmierer mit Kenntnissen aus anderen Sprachen (die es also anders gewöhnt sind) würde dies vermutlich hilfreich sein.

Hierfür bräuchte ich dann bloß eben auch einen vollständigen Textvorschlag. Eine eigene 100%ige Erklärung bekomme ich mangels Kenntnisse anderer Sprachen so nicht hin.

Autor:  ullmann [ 25.06.2006 13:31 ]
Betreff des Beitrags: 

@Andre:
Habe einen Textvorschlag in "Verbesserungen an der Dokumentation für PureBasic v4" gepostet.

Gruß Rainer

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/