Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Boolean-Ausdruck


gerd99 - So 03.05.20 22:01
Titel: Boolean-Ausdruck

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
const x:array[1..3of boolean;

x=(false,true,false);

// ich moechte gerne sowas:

const x: array[1..3of 0 und 1 boolean

x=(0,1,0);


Ich möchte gerne den Boolean-Ausdruck so verwenden, dass ich mit den Zahlen 0 und 1 operiere und nicht mit false und true.
Geht das?

Gerd


Moderiert von user profile iconTh69: Topic aus Algorithmen, Optimierung und Assembler verschoben am Mo 04.05.2020 um 09:02


jaenicke - So 03.05.20 22:13

Intern ist ein Boolean so ähnlich definiert. 0 ist False, alles andere ist True. Aber so wie gezeigt geht es nicht, nein.

Das ist auch der Grund weshalb Nonsens-Vergleiche wie "if (a > b) = True then" böse fehlschlagen können (wenn auch in der Regel nicht).

Was möchtest du denn machen?


gerd99 - Mo 04.05.20 17:59


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
t3_wege:array[1..128of TTweg=       //eigener Stein gleicher Farbe
(
(h:(1,1,1,1,1,1,1)),     //0,     0 0 0 0 0 0 0
(h:(1,1,1,1,1,1,0)),     //64,     0 0 0 0 0 0 1
(h:(1,1,1,1,1,0,0)),     //32,     0 0 0 0 0 1 0
(h:(1,1,1,1,1,0,0)),     //96,     0 0 0 0 0 1 1
(h:(1,1,1,1,0,0,0)),     //16,     0 0 0 0 1 0 0
(h:(1,1,1,1,0,0,0)),     //80,     0 0 0 0 1 0 1
(h:(1,1,1,1,0,0,0)),     //48,     0 0 0 0 1 1 0
(h:(1,1,1,1,0,0,0)),     //112,     0 0 0 0 1 1 1
(h:(1,1,1,0,0,0,0)),     //8,     0 0 0 1 0 0 0
(h:(1,1,1,0,0,0,0)),     //72,     0 0 0 1 0 0 1
(h:(1,1,1,0,0,0,0)),     //40,     0 0 0 1 0 1 0
(h:(1,1,1,0,0,0,0)),     //104,     0 0 0 1 0 1 1
(h:(1,1,1,0,0,0,0)),     //24,     0 0 0 1 1 0 0
(h:(1,1,1,0,0,0,0)),     //88,     0 0 0 1 1 0 1
usw.


ich habe jetzt die Zahlen als byte deklariert. Ich möchte Speicher sparen.
Wenn ich mit true und false die Tabelle fülle schaut das nicht mehr so schön aus.
Das ist der Grund

Gerd


OlafSt - Di 05.05.20 07:39

Speicher sparen in einer Zeit, wo 16GB RAM keine 80€ kosten ?

Das ist sinnlose Mühe. Sauberer, schneller, auch nach 5 Jahren noch leicht verständlicher Code, Fehlerfreiheit - das sind Tugenden, die es anzustreben gilt. Auf Speicherverbrauch brauchst du wirklich nicht achten.


Nersgatt - Di 05.05.20 16:22

user profile icongerd99 hat folgendes geschrieben Zum zitierten Posting springen:

ich habe jetzt die Zahlen als byte deklariert. Ich möchte Speicher sparen.
Wenn ich mit true und false die Tabelle fülle schaut das nicht mehr so schön aus.
Das ist der Grund


Eine Boolean-Variable belegt auch 1 Byte. Da sparst Du nichts.
Ich würde das trotzdem als Boolean deklarieren, auch wenn der Code nicht Deinen ästhetischen Ansprüchen genügt. :D
Denn das macht Dir die Arbeit im eigentlich Quellcode einfacher und an der Stelle ist es dann schöner.

Du könntest auch die Einträge in Deinem Array als Byte (array[1..128] of Byte) deklarieren und dann Masken arbeiten, um abzufragen, ob ein Bit gesetzt ist, oder nicht.