Показать сообщение отдельно
  #1  
Старый 18.11.2013, 15:46
Morik666 Morik666 вне форума
Прохожий
 
Регистрация: 19.09.2013
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
Вопрос Программа игнорирует строки кода

Создал процедуру, а она неправильно пашет (классическая ситуация), лезу в дебаг и узнаю, что в результате первого прохода цикла
Код:
for l1:=1 to a3[0,0] do
l1 равна 4780080, учитывая, что a3[0,0] равно 11, немного удивился.
Закоментировал всё, оставил только цикл
Код:
for l1:=1 to 12 do
Смотрю на значения l1 в дебагере после каждого прохода цикла.
Удивился, ведь на каждом проходе цикла значение оставалось неизменным 4780080.
Поменял обьявление из integer на byte. Теперь мой l1 равнялся 243. Не меняя значения в цикле.
Поиском искал другие переменные с тами названием в программе. Не нашел. Груповой заменой поменял на q1, коих в моей проге не было никогда. Результат тот же.
Закоментировал весь код процедуры, оставил только
Код:
q1:=1;
При трассеровке компилятор даже не зашел в эту строку. Удивился. Знаете, с права от кода делфи расставляет маленькие синие точечьки, напротив выполняемых строк, напротив присваивания ее не было. Зато появился ворнинг, что "Value assigned to 'q1' never used".
Код всей процедуры целиком прилагается:
Код:
function zapusk_procy(f: array of integer):boolean;
var q1, q2, q3: byte; g: array [0..100] of integer;
begin
q1:=1;
q2:=2;
q3:=3;
q3:=4;

g[0]:=0;
for q1:=1 to a3[0,0] do
if f[q1]>0 then
  begin
  g[0]:=g[0]+1;
  g[g[0]]:=f[q1];
  end;
zapusk_procy:=true;
end;
Выполнение проседуры начинается с "g" игнорируя "q".
Все другие процедуры выполняются адекватно. Сейчас сяду писать новую процедуру, в надежде, что она будет выполтся. Хотел бы узнать Ваше мнение об этой проблеме.
Ответить с цитированием