У меня есть набор данных, загруженных в TClientDataset, представляющий массив сложных объектов. Но когда я пытаюсь бежать
Dataset.SaveToFile('c:\test.xml', dfXMLUTF8);
это не нравится:
Project testing.exe вызвал класс исключения EDBClient с сообщением «Тип поля не поддерживается для XML.».
Это намного менее полезно, чем должно быть, по двум причинам. Во-первых, здесь не говорится, какое поле или какой тип поля не поддерживается, а во-вторых, фактическое сохранение происходит внутри DLL черного ящика.
Единственные типы полей, которые я использую в этом наборе данных, - это целые числа, строки, логические значения и несколько полей TArrayFields, которые содержат массивы целочисленных полей. Ничего такого, что я ожидал бы, так сложно сериализовать. Кто-нибудь знает, почему это не работает?





Все сохранено или только какие-то поля? Может быть, например, TArrayFields выдают исключение? Попробуйте удалить разные типы полей один за другим и посмотрите, когда все заработает.
Дикое предположение состоит в том, что поля массива не поддерживаются в экспорте XML, но вы должны проверить.
Перейдите в Параметры проекта-> Компилятор и включите «Использовать отладочные DCU». Восстановить.
Установите точку останова на вызове SaveToFile (). Запустить.
Затем вы можете войти в исходный код VCL и попытаться найти то, что не поддерживается.
DCU отладки уже включены. Однако они не могут отследить вызовы midas.dll.
А если массивы убрать, то получится?