Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Boolean-Roulette" oder "if x=true" (https://www.delphipraxis.net/65914-boolean-roulette-oder-if-x%3Dtrue.html)

glkgereon 22. Mär 2006 10:24


"Boolean-Roulette" oder "if x=true"
 
Hi,

Ein freund im Info-Kurs hat sich gerade eine BoolToStr-Funktion geschrieben...
(Wir haben noch Delphi 4 :-/ )

das ganze sah dann in etwa so aus:
Delphi-Quellcode:
function BoolToStr(Val: Boolean): String;
begin
  Result:='Undefined'; //Debug
  if Val=True then Result:='True'
  else if Val=False then Result:='False';
end;
Interessanterweise kam oft 'Undefined' raus. :gruebel:
Wieso ist (Val=True) False wenn Val=True ist?
Will der mich verarschen? :wiejetzt:

Klaus01 22. Mär 2006 10:27

Re: "Boolean-Roulette" oder "if x=true"
 
Boolean kann auch 0 oder 1 sein, oder nicht?
Delphi-Quellcode:
function BoolToStr(Val: Boolean): String;
begin
  Result:='Undefined'; //Debug
  if Val then Result:='True'
  else if not Val then Result:='False';
end;
Grüße
Klaus

Yheeky 22. Mär 2006 10:30

Re: "Boolean-Roulette" oder "if x=true"
 
Hi!

Ich würde einfach sagen:

Delphi-Quellcode:
function BoolToStr(Val: Boolean): String;
begin
  Result:='Undefined'; //Debug
  if Val=True then Result:='True'
  else Result:='False';
end;
nach else ist in meinen Augen keine Abfrage mehr notwendig.

NicoDE 22. Mär 2006 10:33

Re: "Boolean-Roulette" oder "if x=true"
 
Zitat:

Zitat von glkgereon
Interessanterweise kam oft 'Undefined' raus. :gruebel:
Wieso ist (Val=True) False wenn Val=True ist?

'if Foo = True then' ist ein Vergleich mit der Konstante 'True' (1). Das fällt, meiner Meinung nach unter 'schlechten Stil' und 'Bugs die keiner braucht'...

Mögliche Alternativen:

'if Foo then'
'if Foo <> False then'

'if not Foo then'
'if Foo = False then'

Matze 22. Mär 2006 10:35

Re: "Boolean-Roulette" oder "if x=true"
 
Hi

Wie Klaus und Nico schon angedeutet haben, lasse =true generell weg. Hier siehst du auch den Grund dafür.

xaromz 22. Mär 2006 10:36

Re: "Boolean-Roulette" oder "if x=true"
 
Hallo,

das hatten wir doch schon oft.
False ist Null, während alles, was nicht Null ist, als True gewertet wird. Die Konstante True aber ist Eins.
Deshalb darf man zwar auf False prüfen, aber nie auf True. Stattdessen immer
Delphi-Quellcode:
if A then
also das = True weglassen.

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:53 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