delphi – 如何摆脱`continue`混淆的编译器警告?
发布时间:2020-12-15 09:35:13 所属栏目:大数据 来源:网络整理
导读:参见英文答案 Why is the Compiler warning that variable may not be initialized?????????????????????????????????????3个 编译器向我显示以下代码的以下警告: Warning: W1036 Variable 'Address' might not have been initialized 代码(基于实际代码的M
参见英文答案 >
Why is the Compiler warning that variable may not be initialized?????????????????????????????????????3个
编译器向我显示以下代码的以下警告: Warning: W1036 Variable 'Address' might not have been initialized 代码(基于实际代码的MVCE代码段): function DoFoo(): Integer; var i: Integer; Address,Bar: Cardinal; begin for i := 1 to 5 do begin try Address := Hex2CardPos(IntToStr(i)); except on EConvertError do continue; end; Bar := Address + 42; // "Warning: Address might not have been initialized" end; Result := 42; end; 如您所见,地址是: >分配给Hex2CardPos的结果() 我试图通过添加一个无用的地址来解决这个问题:= 0;到循环的开头,但然后警告只是替换为另一个: Hint: H2077 Value assigned to 'Address' never used. 这是编译器错误还是警告有实质内容? 解决方法
问题出在您的代码中. “bar”赋值必须在try except块中,因为当发生异常时你不想指定“Bar”
function DoFoo(): Integer; var i: Integer; Address,Bar: Cardinal; begin for i := 1 to 5 do begin try Address := Hex2CardPos(IntToStr(i)); Bar := Address + 42; except on EConvertError do continue; end; end; Result := 42; end; 顺便说一句,这段代码有一个“H2077值分配给’Bar’从未使用过”,这是正确的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |