Показать сообщение отдельно
  #1  
Старый 10.10.2011, 15:11
DARKShadow DARKShadow вне форума
Прохожий
 
Регистрация: 10.10.2011
Сообщения: 4
Репутация: 10
Печаль Delphi XE, не работают циклы

Добрый день!

Использую в работе Delphi XE, всё хорошо и вот недавно возникла проблема перестали работать некоторые циклы. Проект большой, суть его в том имеется таблица значений, столбцов порядка 30, а строк может быть много, от единиц до десятков и сотен тысяч. Строки обрабатываются в циклах и вот некоторые из этих циклов, при количестве итераций больше 32597 строк, перестали работать, то есть программа их просто проскакивает, при этом никаких условий перед циклом нет. Так-же заметил что в некоторых случаях такое возникало когда цикл был не от 0, но тем не менее первое значение цикла было меньше конечного:

Код:
procedure SomeProc(FirstRow, LastRow: integer);{FirstRow заведомо меньше LastRow}
var
  i: integer;
begin
  {Некоторые начальные операции, которых может и не быть}
  for i := FirstRow to LastRow do
  begin
    {операции со строкой i}
  end;
end;

Временное решение было таким:

Код:
procedure SomeProc(FirstRow, LastRow: integer);{FirstRow заведомо меньше LastRow}
var
  i, j: integer;
begin
  {Некоторые начальные операции, которых может и не быть}
  for j := 0 to (LastRow - FirstRow) do
  begin
    i := FirstRow + j;
    {операции со строкой i}
  end;
end;

В итоге цикл работает при количестве итерации большем 32597. Но был и случай когда цикл уже был от 0:

Код:
procedure SomeProc;{FirstRow заведомо меньше LastRow}
var
  i: integer;
begin
  {Некоторые начальные операции, которых может и не быть}
  for i := 0 to RowCount - 1 do
  begin
    {операции со строкой i}
  end;
end;

В этом случае, сделал так:

Код:
procedure SomeProc;{FirstRow заведомо меньше LastRow}
var
  i, j: integer;
begin
  {Некоторые начальные операции, которых может и не быть}
  for j := 0 to RowCount - 1 do
  begin
    i := j;
    {операции со строкой i}
  end;
end;

И цикл начал работать.
При замене цикла на цикл while всё работает.
Оптимизация отключена глобально.

В чём тут может быть проблема?
Ответить с цитированием