这似乎是世界上最简单的事情,我准备把头发拉出来。
我有一个看起来像这样的单元;
Unit myUnit;
// ...
//normal declarations
//...
Public
//bunch of procedures including
Procedure myProcedure;
const
//bunch of constants
var
//bunch of vars including
myCounter:integer;
Implementation
Uses //(all my uses)
// All of my procedures including
Procedure myProcedure;
try
// load items from file to TListBox - this all works
except
on EReadError do begin
// handle exception
end;
end; //try
myCounter:=0; // <-- ACCESS VIOLATION HERE
while myCounter //...etc
这是一个简单的变量赋值,我不知道它为什么这样做。我已经尝试将变量声明为单元的局部变量、过程的全局变量——无论我在哪里尝试这样做,我都无法将零值赋给在此过程中任何地方声明的整数,而不会引发访问违反。我完全被难住了。
我从同一单元内的按钮 OnClick 处理程序内部调用该过程,但无论我从哪里调用它都会引发异常。疯狂的是,我在整个程序的其他十几个地方做同样的事情,没有任何问题。为什么在这里?我完全不知所措。