Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Grundsätzliches zu Boolean


Hidden - Mi 10.09.08 18:27

Moderiert von user profile iconNarses: Abgetrennt von hier: "FileSizeToStr" - Dateigrößen in einen String umwandeln [http://www.delphi-forum.de/viewtopic.php?t=86422]

user profile iconNarses hat folgendes geschrieben:
Was hat user profile iconGausi damit zu tun?

Verdammt, schon wieder :!::motz: So ist's richtig, Narses! Erkämpf' dir deine Existenz! Sry, ich wollte eig. nochmal schauen, ob ich das mit dem Poster richtig in Erinnerung hatte.


user profile iconNarses hat folgendes geschrieben:
:gruebel:
b) Welche Werte für den Delphi-Datentyp Boolean kennst du noch, ausser [True, False]? :shock:

Meine, ob nicht die Nummerischen Werte verwendet werden. Wenn ja, Würdest du z.B. bei Boolean(2345233) die Range verfehlen. Nur 'so 'ne Interessensfrage, wird vermutlich nie ein Wert aus der WinApi oder so da hinkommen.

mfG,


Narses - Mi 10.09.08 18:54

Moin!

user profile iconHidden hat folgendes geschrieben:
So ist's richtig, Narses! Erkämpf' dir deine Existenz!
Ich heiße, also bin ich! 8)

user profile iconHidden hat folgendes geschrieben:
Meine, ob nicht die Nummerischen Werte verwendet werden. Wenn ja, Würdest du z.B. bei Boolean(2345233) die Range verfehlen.
Da das hier bereits nicht korrekt ist:

Delphi-Quelltext
1:
2:
3:
4:
var
  MyBool: Boolean;
begin
  MyBool := Boolean(2345233); // Bereichsüberschreitung!
klappt das natürlich auch nicht bei einem Array-Zugriff. :nixweiss:

Korrekt wäre daher:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
const
  Names: array[Boolean] of String = ('Ich','Du');
begin
  MyBool := (2345233 <> 0);
  // und analog:
  ShowMessage(Names[MyInt <> 0]);
cu
Narses


Hidden - Mi 10.09.08 19:23

Hi,

Er.. Verstehe nicht ganz, was du am Ende sagen wolltest :D Aber man könnte der Funktion doch Booleans übergeben, die zum Crah führen?

Denn Boolean ist ja Intern mehr als nur ein Bit. Und, wenn dann ein Array mit den Plätzen 0 und 1 vorhanden ist, könnte doch bei -1 oder so ein Fehler auftreten?

mfG,


Narses - Mi 10.09.08 19:33

Moin!

user profile iconHidden hat folgendes geschrieben:
Er.. Verstehe nicht ganz, was du am Ende sagen wolltest
Ganz einfach: du erzwingst durch einen expliziten Vergleich einen Bool´schen Wert: (MyInt <> SomeValue) :arrow: Boolean :idea:

user profile iconHidden hat folgendes geschrieben:
Aber man könnte der Funktion doch Booleans übergeben, die zum Crah führen?

Denn Boolean ist ja Intern mehr als nur ein Bit.
Boolean ist True oder False, es hat dich nicht zu interessieren, was der Compiler intern damit tut - genau genommen. :zwinker:

user profile iconHidden hat folgendes geschrieben:
Und, wenn dann ein Array mit den Plätzen 0 und 1 vorhanden ist, könnte doch bei -1 oder so ein Fehler auftreten?
Ja, klar, dein ungültiger Typecast erzwingt ja genau so ein Verhalten. Da das aber bei der Zuweisung schon zu einem Problem führen würde (und ganz nebenbei ein Konzept-/Programmierfehler wäre), ist es doch OK, wenn dieser dann "auffällt". ;)

cu
Narses