Delphi 我可以为没有接口的单元设置{$RangeChecks on}吗?
我有一个delphi项目,它包含很多表单和单元(没有接口),我放置“{$RangeChecks on}”的表单捕获超出范围的异常,但当我将其添加到conatins类的单元时,它不会捕获异常,是否有助于捕获该单元中的索引异常?捕获异常,您需要编写一个Delphi 我可以为没有接口的单元设置{$RangeChecks on}吗?,delphi,delphi-7,range-checking,Delphi,Delphi 7,Range Checking,我有一个delphi项目,它包含很多表单和单元(没有接口),我放置“{$RangeChecks on}”的表单捕获超出范围的异常,但当我将其添加到conatins类的单元时,它不会捕获异常,是否有助于捕获该单元中的索引异常?捕获异常,您需要编写一个try-,除了块: try // call code that fails range checks except on E: ERangeError do // ... end; 为了确保代码抛出这些异常,您需要做两件事: 确保已启
try
-,除了
块:
try
// call code that fails range checks
except
on E: ERangeError do
// ...
end;
为了确保代码抛出这些异常,您需要做两件事:
$RANGECHECKS
(又称$R
)编译器指令。您可以将它放在单元中的任何位置,例如顶部,或者放在要检查的任何代码行之前。它应用于当前单元中跟随它的所有代码,直到编译器遇到另一个关闭它的指令,如{$R-}
如果您的计划是将它放在每个单元的顶部,那么您可以像我所做的那样,通过编辑项目的编译器选项来全局启用它。(在这里,我建议启用溢出检查和“typed@operator”。)这与单元的用途或单元包含的代码类型无关。范围检查选项同样适用于任何类型的单元,包括定义表单的单元、定义数据模块的单元以及根本不定义任何设计时对象的单元。如果您认为单位中的代码类型影响范围检查选项的行为,那么您还有其他问题需要调查
$RANGECHECKS
有效。请显示代码。但如果不包括SysUtils,则可能不会捕获异常。没有接口的单元是什么?它们都必须有一个接口和一个实现部分。FWIW,表单也是类。您的意思是具有非表单类的单元在接口部分中没有uses子句吗?是否SysUtils丢失了?我认为“无接口”意味着“无GUI”,因为它也表示“包含类的单元”。