我遇到了很多编译器警告:
评估常量时范围检查错误
我整个计划中的类似陈述。
TxMsg是一个字节。
GetRegs(0)返回WORD数据类型结果。
TxMsg[0] := (GetRegs(0) shr 8) and $0F;
我在研究中发现,这个错误是由隐式类型转换引起的,你需要将int64类型转换为QWORD。如果是这样,那么你如何在我的代码行中做到这一点。
更新
fRegs:SmallInt的数组[0..20];
TxMsg:Byte的数组[0..8];
function GetReg(reg:Integer):word;
begin
if reg <= RegCnt then
result:=fRegs[reg];
end;
答案 0 :(得分:0)
你说&#34;字节&#34;和&#34;字&#34;参与其中。两者都已经没有签名,所以我不知道int64和qword与它有什么关系。
要取消警告,只需将表达式的结果强制转换为byte:
TxMsg[0] := byte((GetRegs(0) shr 8) and $0F);