MyQuery красивый перебор

Обсуждение возникших проблем, предложений и ошибок MyDAC компонентов
Закрыто
imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

MyQuery красивый перебор

Сообщение imobile » Ср 18 июл 2012 17:26

Здравствуйте.
Написал много кода и только сейчас обнаружил, что последняя запись не обрабатывается.

Код: Выделить всё

query->First();
do{
// некая обработка
query->Next();
}while (!query->Eof);
Ничего кроме как

Код: Выделить всё

query->First();
// некая обработка
do{
query->Next();
//повтор некая обработка
}while (!query->Eof);
не нашел, но код становится нечитаемый.
Есть ли в MyQuery что нибудь для решения этой проблемы, скажем индикатор предпоследней записи наподобие Eof? Или как-то это делается по другому?

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

Re: MyQuery красивый перебор

Сообщение imobile » Чт 19 июл 2012 10:06

Извиняюсь, все работает. Eof появляется в случае если next не возвращает данные а не на последней записи, чего мне в голову стукнуло, не знаю.

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: MyQuery красивый перебор

Сообщение AndreyZ » Чт 19 июл 2012 10:44

Я советую Вам также использовать конструкцию while..do вместо do..while в данном случае, т.к. датасет может и не содержать данных после открытия, а Ваш код все равно будет производить обработку. Например:

Код: Выделить всё

query->Open();
query->First();
while (!query->Eof){ // если данные есть
  // обработка
  query->Next();
}

Закрыто