Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Boolean-Werte addieren? (https://www.delphipraxis.net/126794-boolean-werte-addieren.html)

quendolineDD 4. Jan 2009 03:10

Re: Boolean-Werte addieren?
 
omata, aus einem einfachen Grund:
Delphi-Quellcode:
var
  b : BOOLEAN;
  i : INTEGER;
begin
  b := BOOLEAN(2);
  i := ORD(BOOLEAN(b));
end;
Das klappt dann für jedwegen Boolean'schen Ausdruck, eben auf der Prämisse das FALSE = 0 und TRUE <> 0.
b ist in diesem Fall TRUE, da <> 0. Das könnte in deiner Berechnung erhebliche Fehler erzeugen ...

Desweiteren wollte der Threadersteller lediglich die Anzahl aller Ausdrücke und eben die Anzahl aller wahren Ausdrücke wissen.

Und alle hier geposteten Funktionen und Prozeduren sind meiner Meinung nach etwas Overhead für die eigentlich gestellte Frage.
Delphi-Quellcode:
if BoolVar then INC(TrueVals);
INC(SumVals);

Hawkeye219 4. Jan 2009 11:41

Re: Boolean-Werte addieren?
 
Hallo,

die Routine von omata funktioniert auch für ByteBool, WordBool und LongBool (=BOOL). Die notwendige Anpassung der Werte an den gewählten Elementtyp Boolean übernimmt der Delphi-Compiler. Die Routine darf also davon ausgehen, dass der Ordinalwert der Elemente entweder 0 oder 1 ist, so wie es auch in der Hilfedatei dokumentiert ist. Ärger gibt es nur dann, wenn man (mutwillig) als Boolean verkleidete Byte-Werte übergibt. Aber das wäre so, als würde man einen Texteditor eine ausführbare Datei laden lassen. Dafür ist der in der Regel nicht ausgelegt...

Gruß Hawkeye

Cyf 4. Jan 2009 19:26

Re: Boolean-Werte addieren?
 
Ich denke ein simples Inc(n) in einer Schleife, die alle Bools überprüft (also <> 0) ist trotzdem schöner und kommt dann auch mit allem zurecht (und nebenbei ist es auchnoch unwesentlich kleiner im Code).
Aber die Diskussionm ob man Boolean jetzt sicher als 1 annehmen darf oder nichtm gabs hier schon ein paar mal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 Uhr.
Seite 3 von 3     123   

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 by Thomas Breitkreuz