Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi bool-array logisch verknüpfen (https://www.delphipraxis.net/120027-bool-array-logisch-verknuepfen.html)

xineohp 4. Sep 2008 16:23


bool-array logisch verknüpfen
 
hi,

ich suche sowas wie and( myBoolArray ), gibt es das?

Cyf 4. Sep 2008 16:37

Re: bool-array logisch verknüpfen
 
Schreib bitte mal genauer, was du machen willst.

Spontan einfach mal:

Delphi-Quellcode:
mybool and myboolarray[i]

xineohp 4. Sep 2008 17:25

Re: bool-array logisch verknüpfen
 
ich möchte die Elemente eines BoolArrays logisch (zB. mit and) verknüpfen. und das möglichst ohne eine extra Variable, Schleife oder Funktion zu schreiben/deklarieren. In vielen anderen Sprachen gibt es sowas und ich hoffe, dass auch Delphi so etwas anbietet.

grenzgaenger 4. Sep 2008 19:47

Re: bool-array logisch verknüpfen
 
und wo liegt das problem?

Delphi-Quellcode:
boolarray1 := boolarray2 AND boolarray3
oder mit OR oder mit XOR oder mit ...

SirThornberry 4. Sep 2008 19:51

Re: bool-array logisch verknüpfen
 
@grenzgaenger: ich glaube er will die Werte des Arrays mit AND verknüpfen und nicht die Arrays selbst. Mir ist für delphi keine Funktion bekannt die das macht. Da die Sprache auch Objectpascal genannt wird glaube ich nicht das eine Funktion für Arrays in Zukunft hinzugefügt wird.

grenzgaenger 4. Sep 2008 21:42

Re: bool-array logisch verknüpfen
 
jetzt ist die frage was man unter array versteht...

:glaskugel: hohl: bool array, array of booleans... = array of bits ... haben wir doch ... :stupid:

z.b.
  • 8 bit arrays (z.b. byte, char)
  • 16 bit arrays (z. b. integer, word)
  • 32 bit arrays (z. b. longword)

und die kann man doch verknüpfen ... entweder als array oder einzeln, ... wo es dann 'n wenig komplizierter wird...

aber meine :glaskugel: ist müde ... und ich geh auch gleich :cat:

xineohp 5. Sep 2008 00:22

Re: bool-array logisch verknüpfen
 
hm, mir war nicht klar, dass meine Frage so mehrdeutig war, sorry ... um das nochmal klarzustellen:
Ich möchte die Elemente eines array of boolean logisch verknüpfen, also zB mit and.

Anscheinend gibt es keine solche Funktion in Delphi.

Danke für eure Hilfe.

Medium 5. Sep 2008 06:39

Re: bool-array logisch verknüpfen
 
Jetzt einfach die Elemente eines Arrays hintereinander weg, oder von zwei gleichlangen Arrays je die Elemente mit selbem Index?

Und ja, in beiden Fällen gibt es keine fertige Funktion, aber es wäre in beiden Fällen im Wesentlichen auch nur ein Zweizeiler. Und sei versichert: Welche Sprache das auch immer von Hause aus mit bringt: Es wird eine Schleife dahinter stecken. Einzig für den zweiten Fall könnte man sich (so lange man max. 32 Elemente hat) ein Verwursten in Integers vorstellen, und die Verknüpfung in einem Schritt machen. Der Aufwand um dahin zu kommen ist, da Delphi Arrays nun mal keine Bitfelder sind, sicherlich größer als da eben mit einer Schleife drüber zu rutschen.

DeddyH 5. Sep 2008 07:13

Re: bool-array logisch verknüpfen
 
Außerdem käme bei einer AND-Verknüpfung von Booleans sowieso false heraus, sobald auch nur ein Element false ist. Leider weiß ich im Moment keine saubere Lösung, um diesen Umstand performancetechnisch auszunutzen (außer eine Schleife mit break oder sowas).

Hawkeye219 5. Sep 2008 08:28

Re: bool-array logisch verknüpfen
 
Hallo,

wenn es dir nur darum geht, die Implementierung einer UND-Verknüpfung zu vermeiden, dann könntest du die Klasse Delphi-Referenz durchsuchenTBits verwenden:

Delphi-Quellcode:
var
  Bits : TBits;
begin
  Bits := TBits.Create;
  Bits.Size := 42;

  {.. hier kannst du die Bits nach Bedarf setzen oder löschen ..}

  if (Bits.Size > 0) and (Bits.OpenBit = Bits.Size) then
    { alle Bits sind gesetzt };

  Bits.Free;
end;
Bei bis zu 256 Elementen käme eventuell noch ein set of Byte in Frage. Damit lassen sich auch andere Verknüpfungen als UND realisieren.

Gruß Hawkeye


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