У меня есть приложение Delphi 2009, которое выполняет запрос к базе данных, используя компонент TADOQuery. Когда запрос вернул данные, я вызываю процедуру saveToFile в TADOQuery, указывая в качестве параметра формата «pfXML», который, очевидно, сохраняет данные в XML-документе. Это отлично работает.
Для просмотра данных у меня есть экран, который содержит виртуальный просмотр списка. Я использую другой компонент TADOQuery на этом экране и вызываю процедуру loadFromFile для чтения данных из XML-документа. Затем я могу отобразить данные в виртуальном списке с помощью функции fieldByName в TADOQuery. Опять же, это работает нормально - или, по крайней мере, оно работает нормально в течение последних нескольких месяцев.
Сегодня я столкнулся с ошибкой, когда я выполнил определенный запрос, и когда я попытался открыть отчет, я получил ошибку: «Символ« <»нельзя использовать в значении атрибута». Я считаю, что это ошибка XML, но я не могу найти причину. </p>
Я использовал отладчик Delphi, чтобы увидеть, где возникла ошибка, и строка, которая вызывает исключение, является строкой, которая возвращает количество записей в TADOQuery (т.е. adoquery.recordCount). Если навести курсор мыши на вызов .recordCount через точку останова в моем коде, всплывающая подсказка выдаст сообщение «Исключение Delphi за $ 1286F945».
Как я уже сказал, это работало в течение нескольких месяцев, и теперь эта ошибка неожиданно возникла. Очевидно, что в возвращаемых данных есть что-то, что вызывает проблему, но я понятия не имею, что. Я отсканировал документ XML, и там нет символов «<», которые не являются частью тега. </p>
Наконец, просто чтобы предупредить любого, кто хочет ответить комментарием «Почему вы делаете это так? Вы должны делать это так ...», одно из требований приложения состоит в том, что приложение должно разрешать пользователь может выполнить запрос и сохранить его для последующего просмотра в автономном режиме, поэтому вызовы saveToFile / loadToFile.