回覆列表
  • 1 # 使用者9636864027808

    bool是LongBool型別。 Delphi中定義了四種布林型別:Boolean,ByteBool,WordBool和LongBool。後面三種布林型別是為了與其他語言相容而引入的,一般情況下建議使用Boolean型別。這四種類型的布林值佔用記憶體的數量如下:Boolean

    1 ByteByteBool 1 ByteWordBool

    2 Bytes(1 Word)LongBool 4 Bytes(2 Words)對於ByteBool,WordBool和LongBool三種類型True常量的值為非零,False為零,可以用Ord函式驗證;而對於Boolean型別,True常量的值為1,False為零。在期望Boolean值的上下文中,編譯器會將ByteBool,WordBool和LongBool三種類型的非零值轉換為True。然而,在Delphi中布林表示式和Integer/Real是不相容的。下面的表格對比了Boolean與ByteBool/WordBool/LongBool在異同: Boolean False < TrueOrd(False) = 0Ord(True) = 1Succ(False) = TruePred(True) = FalseBoolToStr(True) = -1 //這個函式很變態BoolToStr(False) = 0 ByteBool, WordBool, LongBoolFalse <> TrueOrd(False) = 0Ord(True) <> 0Succ(False) = TruePred(False) = True BoolToStr這個函式最莫名其妙了,明明說True的值是1,而它卻告訴我們True是-1。函式的原形是:function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;下面這個表是函式的轉換規則:B UseBoolStrs Value of returned stringTrue False "-1"True True TrueBoolStrs陣列的第一個值(default, "TRUE")False False "0"False True FalseBoolStrs陣列的第一個值(default, "FALSE")

  • 中秋節和大豐收的關聯?
  • 怎樣正確設定腳踏車的坐墊?