下面是一个简单的Delphi表单应用程序的代码,该应用程序为包含单元格的指定TStringGrid设置超出范围的单元格值。
当计数器 i 高于1时,运行程序并在显示的表单上单击生成的网格应生成运行时范围检查错误。
在项目选项中启用了范围检查,我尝试使用和不使用{R +}编译器指令运行程序。
为什么没有范围检查错误?
我正在使用在Windows 7(64位)上运行的Delphi7。
public class Dog extends Animal {
int h;
int w;
public Dog(int h, int w){
this.h = h;
this.w = w;
}
public void move(String s){
super.move("s1", "s2");
System.out.println("dog.move - parameters: " + s);
}
}
答案 0 :(得分:2)
来自documentation(强调添加):
$ R指令启用或禁用范围检查代码的生成。在{$ R +}状态中,所有数组和字符串索引表达式都被验证为在定义的范围内,并且对标量和子范围变量的所有赋值都将在范围内检查。如果范围检查失败,则引发ERangeError异常(或者如果未启用异常处理,则终止程序)。
TStringGrid单元格引用不属于需要进行范围检查的变量和赋值类型。