Кажется, это самая простая вещь в мире, и я готов стащить с нее волосы.
У меня есть устройство, которое выглядит так;
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 из того же модуля, но независимо от того, откуда я ее вызываю, это вызывает исключение. Сумасшедшая вещь в том, что я делаю то же самое в дюжине других мест в единицах по всей программе без проблем. Почему здесь? Я в полной растерянности.