Код:
1. Следствие оптимизации. Без обращения к рекордсету компилятор считает цикл пустым. Отключи оптимизацию
Это вряд-ли, т.к при отладке данный цикл нормально отрабатывает и без обращения к рекордсету.
Код:
2. Следствие ассинхронной работы. Управление вернулось, но до обращения к рекордсету он еще не загружен.
Я тоже уже склонюсь к такому выводу, тем более что в режиме отладки, когда существуют естественные паузы между шагами, никаких ошибок не наблюдается. Но как тогда узнать, что рекордсет загружен, если состояние stOpen как-раз отвечающее за это, здесь не срабатывает? Я пробовал в событии FetchComplete логическую переменную для этого заводить - не помогло.