Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Unterschied zwischen "not" und "false"? (https://www.delphipraxis.net/153659-unterschied-zwischen-not-und-false.html)

rollstuhlfahrer 11. Aug 2010 20:44

AW: Unterschied zwischen "not" und "false"?
 
-1 hat aber auch bei calc den Byte-Wert FF.

mkinzler 11. Aug 2010 20:55

AW: Unterschied zwischen "not" und "false"?
 
Weil bei signed das oberste Bit das Vorzeichen bestimmt

Wegen 0 - Zahl = negative Zahl

Code:
0           -       1 =      -1
00000000(1) - 1000000 = 11111111

xZise 11. Aug 2010 21:31

AW: Unterschied zwischen "not" und "false"?
 
Siehe dazu das Zweierkomplement.

Und das andere: Es ist Definitionssache ;) Wenn du $FF in einen unsigned Byte schreibst, dann hast du 255. Aber in der Regel werden vorzeichenbehaftete Datentypen genommen.

Außerdem ist das doch glaub ich andersherum: true = -1 in Delphi oder nicht?

MfG
Fabian

rollstuhlfahrer 11. Aug 2010 21:34

AW: Unterschied zwischen "not" und "false"?
 
Ich habs noch nicht ausprobiert, aber da sollte +1 rauskommen. In Delphi ist der Boolean wohl so definiert:
Delphi-Quellcode:
type Boolean = (false, true);
und damit ist true +1 und false 0.

Bernhard

mkinzler 11. Aug 2010 21:37

AW: Unterschied zwischen "not" und "false"?
 
Ja aber der Wert wird in einem Byte gespeichert un deshalb sind andere Werte möglich und wie schon gezeigt wurde leifern bestimmte Funktionen andere Werte.
Kurz gesagt ist alles was nich false ist true ( <> 0)

himitsu 11. Aug 2010 21:40

AW: Unterschied zwischen "not" und "false"?
 
-1 in einem signed und mit Überlauf in einem unsigned Register (32 Bit) ist $FFFFFFFF ... tja und wenn man dieses auf ein Byte kürzt, dann kommt eben $FF raus.

Abgesehn davon daß viele WinAPIs eh LongBool (32 Bit) nutzen.

mkinzler 11. Aug 2010 21:42

AW: Unterschied zwischen "not" und "false"?
 
Das hat nichts mit dem Überlauf zu tun, sondern wie oben geschrieben das 0 - eien zahl deren inverses Element ergibt bzw. Zahl + Komplement = 0

uligerhardt 11. Aug 2010 21:55

AW: Unterschied zwischen "not" und "false"?
 
Um das zu entscheiden, braucht man keinen CPU-View oder ASM-Code.
  • Delphi-Quellcode:
    if not List.IsEmpty then
    heißt "Wenn die Liste leer ist, dann...".
  • Delphi-Quellcode:
    if List.IsEmpty = false then
    heißt "Wenn es falsch ist, dass die Liste leer ist, dann...".
Ich muss da nicht nachdenken, welche Variante ich nehme. :mrgreen:

rollstuhlfahrer 11. Aug 2010 22:02

AW: Unterschied zwischen "not" und "false"?
 
Kleiner Denkfehler:

if not List.IsEmpty bedeutet: Wenn nicht die Liste leer ist -> die Liste ist also nicht leer -> in der Liste ist was drin

if List.IsEmpty = false bedeutet: Wenn es falsch ist, dass die Liste leer ist, wobei .IsEmpty glücklicherweise eine Delpi-eigene Funktion ist, wodurch das hier geht, aber nicht schön ist, weil man über das = false beim lesen stolpern könnte.

Du willst wohl ausdrücken: Wenn die Liste nicht leer ist, dann...; heißt im Englischen: if the list is not empty. Aus den Kursiv gedruckten Wörtern erschließt sich dann, was man in Delphi dann schreiben muss.

Bernhard

uligerhardt 11. Aug 2010 22:26

AW: Unterschied zwischen "not" und "false"?
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1041385)
Kleiner Denkfehler:

if not List.IsEmpty bedeutet: Wenn nicht die Liste leer ist -> die Liste ist also nicht leer -> in der Liste ist was drin

Ähm, ich wollte natürlich schreiben:
Zitat:

Delphi-Quellcode:
if not List.IsEmpty then
heißt "Wenn die Liste nicht leer ist, dann...".
:oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.
Seite 3 von 4     123 4      

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