Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#15

Re: Überprüfen, ob drei Vergleiche gleich sind

  Alt 13. Aug 2009, 16:29
Zitat von himitsu:
da muß man aufpassen

True (die Konstante):
BOOL (c) = LongBool (delphi) = -1 = $FFFFFFFF
WordBool (delphi) = -1 = $FFFF
bool (c) = ByteBool (delphi): -1 = $FF
Boolean (Delphi): 1 = $01

True (bei booleanischen Vergleichen):
alles: b<>0

True (bei binärischen Vergleichen):
alles: b=Wert

darum ist auch b=True so fartal, da dort wirklich geprüft wird, ob b genau dem True entspricht

False (die Konstante und bei Vergleichen):
alles: b=0
Joar genau, aber rein theoretisch müsste das ja klappen Wenn auch nicht gerade sprachübergreifend sicher

Zitat von Dax:
Um es schön in einer Zeiler zu halten, mit dem Wissen, dass Boolean = equivalent XNOR:not ((not ((S1 = '') xor (S2 = ''))) xor (S3 = ''))
Aber das wird nicht funktionieren: Und zwar nimmst du nicht beim Vergleich zu S3 nicht mit rüber, wie S1/S2 aussahen: S1 und S2 != '' und S3 = '' -> True, da ja S1 und S2 = '' genau gleich sind beim innersten Vergleich.

Zitat von himitsu:
i hab's jetzt
Delphi-Quellcode:
if not (((S1 = '') xor (S2 = '')) or ((S1 = '') xor (S3 = ''))) then
// oder
if not (((S1 <> '') xor (S2 <> '')) or ((S1 <> '') xor (S3 <> ''))) then
Sieht interessant aus

Zitat von himitsu:
[...]also so Schlimm ist dann ein Vergleich via = oder &lt;&gt; garnicht
Nein aber das holen des Wertes dauert schon, wobei ich da mal wieder zu pingelig bin.

Und es hört sich so schön an:
Result := ((S1 = '') = (S2 = '') = (S3 = '')) Nun da ich eh die Werte zwischenspeichern "muss", werde ich himitsus letzte Variante nehmen.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat