Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #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 всё работает.
Оптимизация отключена глобально.

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


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:52.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter