これは世界で最も単純なことのように思えます、そして私はそれの上に私の髪を引っ張る準備ができています。
私はこのようなユニットを持っています;
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ハンドラー内からプロシージャを呼び出していますが、どこから呼び出しても例外がスローされます。クレイジーなことは、プログラム全体のユニット内の他の12の場所で、まったく同じことを問題なく実行できることです。なぜここに?私は完全に途方に暮れています。