![]() |
Re: Boolean-Werte addieren?
Zitat:
ungetestet, aber wie wäre es mit einem
Delphi-Quellcode:
Und dann benutzt du für deine einzelnen boolschen Ausdrücke
var
summe: array[Boolean] of Integer;
Delphi-Quellcode:
Gruß,
Inc(summe[boolausdruck]);
SirTwist |
Re: Boolean-Werte addieren?
Ich denke, es bleibt nichts anderes übrig, als stures Zählen.
Delphi-Quellcode:
Es kann entweder ein Boolean-Array übergeben werden oder
function AddBooleanValues(Values: array of boolean): integer;
var i: integer; begin result := 0; for i := 0 to high(Values) do if Values[i] then inc(result); end; ![]() |
Re: Boolean-Werte addieren?
Moin, Moin,
z. B. mit der Klasse im beiliegenden Testprogramm.
Delphi-Quellcode:
PROGRAM Project1;
{$APPTYPE CONSOLE} USES SysUtils, Windows; TYPE TAddBool = CLASS strict private fAddArray: ARRAY [0..1] OF integer; public PROCEDURE Clear; PROCEDURE add(abool: boolean); PROCEDURE print; END; {$region 'TAddBool'} PROCEDURE TAddBool.add(abool: boolean); BEGIN Inc(fAddArray[integer(not (aBool = False))]); END; PROCEDURE TAddBool.Clear; BEGIN ZeroMemory(@fAddArray, sizeof(fAddArray)); END; PROCEDURE TAddBool.print; BEGIN writeln('True: ', fAddArray[1]); writeln('False: ', fAddArray[0]); END; {$endregion} VAR AddBool: tAddBool; BEGIN AddBool := tAddbool.Create; TRY addbool.add(True); addbool.add(False); addbool.add(True); addbool.print; readln; FINALLY addbool.Free; END; END. |
Re: Boolean-Werte addieren?
Man kann auch den Ordinalwert eines Boolean bilden und um im Beispiel zu bleiben...
Delphi-Quellcode:
function AddBooleanValues(Values: array of boolean): integer;
var i: integer; begin result := 0; for i := 0 to high(Values) do result:=result + ord(Values[i]); end; |
Re: Boolean-Werte addieren?
Zitat:
@omata: Das ist halt riskant. |
Re: Boolean-Werte addieren?
Zitat:
|
Re: Boolean-Werte addieren?
Weniger riskant als eher grauenhafter Stil. Idealerweise soll Code wie Prosa lesbar sein, man liest ihn, und versteht sofort, was gemeint ist. Das hier ist weniger Prosa-Stil, sondern eher Gesetzestext-Stil. :mrgreen:
|
Re: Boolean-Werte addieren?
@3_of_8: das werde ich mir merken.
|
Re: Boolean-Werte addieren?
Im Übrigen: Der Ordinalwert von True als LongBool, wie es glaube ich bei manchen C-Versionen genutzt wird, oder zumindest, und vor allem, wie es Windows in einigen Bibliotheksfunktionen nutzt, ist $FFFFFFFF. Wenn du deinen Code also mit LongBools machst, bekommst du am Ende die Anzahl der True-Werte negativ heraus. ;)
True ist eben nicht wirklich als Boolean(1) definiert, sondern als alles, was nicht False ist, und False ist Boolean(0). |
Re: Boolean-Werte addieren?
Oh man, Leute ihr habt es immer noch begriffen. Naja egal, ich bin dann mal wieder weg.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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