AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Boolean-Werte addieren?

Ein Thema von PeterPanino · begonnen am 2. Jan 2009 · letzter Beitrag vom 4. Jan 2009
Antwort Antwort
Seite 2 von 3     12 3      
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#11

Re: Boolean-Werte addieren?

  Alt 3. Jan 2009, 23:34
Zitat von PeterPanino:
Kann man Boolean-Werte eigentlich addieren? Und zwar so, dass aus der Summe ersichtlich ist, wie viele True- und wie viele False-Werte enthalten sind?
Hi,

ungetestet, aber wie wäre es mit einem
Delphi-Quellcode:
var
  summe: array[Boolean] of Integer;
Und dann benutzt du für deine einzelnen boolschen Ausdrücke Inc(summe[boolausdruck]); Gruß,
SirTwist
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Boolean-Werte addieren?

  Alt 3. Jan 2009, 23:51
Ich denke, es bleibt nichts anderes übrig, als stures Zählen.
Delphi-Quellcode:
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;
Es kann entweder ein Boolean-Array übergeben werden oder sowas.
  Mit Zitat antworten Zitat
WInfo

Registriert seit: 3. Jan 2009
36 Beiträge
 
#13

Re: Boolean-Werte addieren?

  Alt 3. Jan 2009, 23:53
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.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Boolean-Werte addieren?

  Alt 3. Jan 2009, 23:57
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;
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#15

Re: Boolean-Werte addieren?

  Alt 4. Jan 2009, 00:01
Zitat von WInfo:
Moin, Moin,

z. B. mit der Klasse im beiliegenden Testprogramm.

...
Vielleicht solltest du lieber einen Service schreiben und per COM darauf zugreifen

@omata: Das ist halt riskant.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Boolean-Werte addieren?

  Alt 4. Jan 2009, 00:04
Zitat von NamenLozer:
@omata: Das ist halt riskant.
Warum sollte das riskant sein? Der Ordinalwert von True und False wird sich niemals ändern. Wieso auch?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Boolean-Werte addieren?

  Alt 4. Jan 2009, 00:07
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Boolean-Werte addieren?

  Alt 4. Jan 2009, 00:10
@3_of_8: das werde ich mir merken.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Boolean-Werte addieren?

  Alt 4. Jan 2009, 00:18
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).
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: Boolean-Werte addieren?

  Alt 4. Jan 2009, 00:20
Oh man, Leute ihr habt es immer noch begriffen. Naja egal, ich bin dann mal wieder weg.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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