【问题标题】:Delphi XE7 Audit Error 'Array index is out of range'Delphi XE7 审计错误'数组索引超出范围'
【发布时间】:2016-06-22 13:12:56
【问题描述】:

Delphi XE7 Audit 在此处显示错误“数组索引超出范围”:

for i := 0 to High(Hazards) do begin
  if Hazards[i].Ident = 123 then begin
    HazardId := i;
    Break;
  end;
end;

有什么问题?

Hazards 是一个动态数组

【问题讨论】:

  • @MartynA,编译器将High(dynarr) 转换为Lenght(dynarr) - 1,用0 代替Low 有点,但它没有效果。跨度>
  • 请显示可重现的完整代码 (stackoverflow.com/help/mcve)

标签: arrays delphi delphi-xe7


【解决方案1】:

假设i是有符号类型,Hazards是动态数组,那么代码正确,审计错误。数组的边界为low()high(),对于动态数组,前者始终为零。

如果我的假设成立,那么您应该提交一份错误报告。由于您没有展示完整的复制品,因此我不准备完全确定地声称存在错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多