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 строк. А как оформишь всё это это циклом - нет.
В чем проблема? Есть идеи, догадки, советы?