![]() |
Re: Zufallsboolean
Zitat:
Dann ist das Ergebnis u.U. weder True noch False. Lasst doch endlich den Schmarrn mit dem Boolean-Typecasting. Das gibt nur Probleme. |
Re: Zufallsboolean
Zitat:
|
Re: Zufallsboolean
Zitat:
|
Re: Zufallsboolean
Zitat:
Zitat:
Zitat:
Mal ehrlich: wenn es einen sauberen Weg gibt, sollte man ihn auch gehen, und nicht irgend einen dreckigen Seitenpfad, der verspricht, drei Meter kürzer zu sein. |
Re: Zufallsboolean
Zitat:
Delphi-Quellcode:
vermeiden sollte. IMO spricht nix gegen den typecast auf Boolean.
if x = true then
|
Re: Zufallsboolean
NL: Kompiliere bitte mal "a_bool := Boolean(2); b_bool := True; c_bool := a_bool xor b_bool;" und poste die Disassembly. Das würde mich echt mal interessieren, wie Delphi den Bool-Cast umsetzt...
|
Re: Zufallsboolean
Zitat:
Zitat:
Findest Du das in Ordnung? Du kannst mit gecasteten Booleans einfach nicht arbeiten. Punkt. |
Re: Zufallsboolean
Okay, jetzt verstehe ich, was du meinst. XOR liefert ein falsches Ergebnis. (@dax)
Bei random(2) ist es aber trotzdem egal, weil eh nur 0 oder 1 herauskommen kann, und ich denke nicht, dass der Wert von True einafch so in der nächsten Delphiversion geändert wird. Wenn man natürlich auf 100%ige Kompatiblität wert legt, ist die IF SCHLEIFE wohl die bessere wahl. Btw: mir fällt grad noch was ein:
Delphi-Quellcode:
Ist allerdings schon ziemlich entwartet, aber ob das wirklich sinnvoll bzw. schneller ist, ist wohl fraglich. (Bei True=1 wird der Compiler die Multiplikation ja hoffentlich eh rausoptimieren).
x := boolean(random(2)*ord(True));
edit: aber ist schon gut, ihr habt gewonnen :stupid: |
Re: Zufallsboolean
Zitat:
|
Re: Zufallsboolean
Hi,
Zitat:
@alzaimar: Da ist was dran. Ich denke folgendes Beispiel macht das mit =true besser verständlich:
Delphi-Quellcode:
Tja, true <> true, obwohl Äquivalenz vorliegt.
var
foo, bar: Boolean; foo := <Funktion aus DLL die -1 (true in anderen Sprachen) zurückgibt>; bar := <Funktion die 1 (derzeit true in Delphi) zurückgibt>; if foo = bar then blubb; <-- wird nicht ausgeführt Notfalls würde folgendes helfen, solange feststeht, dass 0 = false:
Delphi-Quellcode:
Hauptsache, der Compiler optimiert das nicht.
function equivalent(b1, b2: Boolean): Boolean; inline;
begin Result := (b1 = false) = (b2 = false); end; Oder so:
Delphi-Quellcode:
Vllt sollte man dieses Thema aufsplitten. Ich sehe es schon kommen, dass es hier um drei Themen geht: Zufallsboolean, Boolean-Werte außerhalb [true, false] und if-ist-keine-schleife.
function CorrectBool(b: boolean): boolean; inline;
begin Result := b <> false; end; Mfg FAlter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr. |
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