1
我想用一行簡單的代碼讀取布爾值,如下所示:ReadBuffer(Result,1)。無法用TMemoryStream讀取布爾值
閱讀後,結果爲true。然而
結果:=不會導致
不會 '開關' 的值爲false。
我在這裏顯然是一個基本的錯誤。
全碼:
TYPE
TCMemStream= class(TMemoryStream)
public
function ReadBoolean: Boolean;
end;
function TCMemStream.ReadBoolean: Boolean;
begin
ReadBuffer(Result, 1);
Result:= NOT Result; <-------- after executing this line, Result has the same value
Result:= false; <----- this works
end;
或者使用'ByteBool',如果合適的話。 – hvd 2015-02-07 15:35:36
ByteBool也可用於通過類型轉換來清理布爾值。 – 2015-02-07 15:40:16
非常好/奇怪的行爲我得到了使用結果作爲緩衝區。我不知道當將二進制數據直接加載到布爾變量中時它會表現得很奇怪。事實上,在將數據加載到字節var後,其值爲255(代表真)。所以看起來TRUE/FALSE在布爾變量中保持爲$ FF/$ 00。感謝大衛對此有所瞭解。 – Ampere 2015-02-07 21:25:14