Задать вопрос

Почему не работает цикл?

Delphi 7.
В результате написания программы, я понял что код можно сильно упростить.
Но цикл не работает и вызывает ошибку. Сначала Invalid pointer operation (закрываю окно ошибки) Runtime error 217 at 00402764.
Место ошибки при использовании цикла - процедура создания массива CASE_OF_TREATMENT_SETTINGS_TABLE
А без цикла - нет ошибок.

//процедура создания массива CASE_OF_TREATMENT_SETTINGS_TABLE выше. 
//её код тут пока не пишу, дабы не грузить лишним

for i:=1 to 20 do //Перебор по строкам
begin
for j:=1 to excel_columns_1 do //Перебор по столбцам
begin

//Тут 120 таких строчек. Это глупо. Можно и нужно заменить циклом.
Но это работает.
{
//Столбец 1
if ((current_string=CASE_OF_TREATMENT_SETTINGS_TABLE[1,1]) and (DRMP_TABLE_list_1_column_number[1]=0)) then 
DRMP_TABLE_list_1_column_number[1]:=j;
//Столбец 2
if ((current_string=CASE_OF_TREATMENT_SETTINGS_TABLE[2,1]) and (DRMP_TABLE_list_1_column_number[2]=0)) then DRMP_TABLE_list_1_column_number[2]:=j;
//Столбец 3
if ((current_string=CASE_OF_TREATMENT_SETTINGS_TABLE[3,1]) and (DRMP_TABLE_list_1_column_number[3]=0)) then DRMP_TABLE_list_1_column_number[3]:=j;
...
//Столбец 120
if ((current_string=CASE_OF_TREATMENT_SETTINGS_TABLE[120,1]) and (DRMP_TABLE_list_1_column_number[120]=0)) then DRMP_TABLE_list_1_column_number[120]:=j;
}

//А вот чем я хочу заменить эти 120 строк. Но это вызывает ошибку. Непонятно почему (
for k:=1 to 120 do
begin
if ((current_string=CASE_OF_TREATMENT_SETTINGS_TABLE[k,1]) and (DRMP_TABLE_list_1_column_number[k]=0)) then DRMP_TABLE_list_1_column_number[k]:=j;
end;

end;
end;


Можно было сказать, что проблема с массивами, размерностью и т.д. но код выше - 120 строк, они работают.
Все что я сделал - создал ещё 1 цикл. И он вызывает ошибку.
Переменная k нигде не используется.

Я не понимаю, почему простая строка работает, а цикл нет.
И почему он вызывает ошибку в процедуре создания массива. Если бы там была ошибка (размерность массива, данные и т.д.), то строка тоже бы не работала. Код идентичный.
А строка работает. И все 120 строк. А как оформишь всё это это циклом - нет.

В чем проблема? Есть идеи, догадки, советы?
  • Вопрос задан
  • 220 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@kalapanga
Привели бы Вы лучше весь реальный код, который не работает, по этим кусочкам можно только гадать, как на кофейной гуще. А то более чем странно получается, говорить об ошибке при работе с массивом и не привести объявление массива. Тем более, что Вы сами пишете, что ошибка там. Выделите такой минимальный кусок кода, работа которого приводит к ошибке, но который можно скопировать себе, скомпилировать, запустить и посмотреть на ошибки. А может и без этого всё понятно будет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы