2008-12-26 6 views
0

J'ai un tas de données chargées dans un TClientDataset, représentant un tableau d'objets complexes. Mais lorsque je tente de lancerTClientDataset: 'Le type de champ n'est pas pris en charge pour XML.'

Dataset.SaveToFile('c:\test.xml', dfXMLUTF8); 

il ne l'a pas aimé:

Projet testing.exe élevé EDBClient classe d'exception avec le message 'FieldType pas pris en charge pour XML.'.

Ceci est beaucoup moins utile qu'il devrait être, pour deux raisons. Tout d'abord, il ne dit pas quel champ ou quel type de champ n'est pas supporté, et deuxièmement, la sauvegarde réelle a lieu dans une DLL boîte noire.

Les seuls types de champs que j'utilise dans cet ensemble de données sont des entiers, des chaînes, des booléens et quelques objets TArrayField qui contiennent des tableaux de champs entiers. Rien que je m'attendrais à être si difficile à sérialiser. Quelqu'un a une idée de pourquoi cela ne fonctionne pas?

+0

Cela fonctionne-t-il si vous supprimez les matrices? –

Répondre

1

Tout est-il enregistré ou seulement certains champs? Peut-être que par exemple TArrayFields lève une exception? Essayez de supprimer les différents types de champs un par un et voyez quand les choses commencent à fonctionner.

0

Wild suppose que les champs de tableau ne sont pas pris en charge dans l'exportation XML, mais vous devez vérifier. Allez dans Options du projet-> Compilateur et activez "Utiliser les DCU de débogage". Reconstruire.

Définissez le point d'arrêt sur votre appel SaveToFile(). Courir.

Ensuite, vous pouvez accéder à la source VCL et essayer de rechercher ce qui n'est pas pris en charge.

+0

Les unités DCU de débogage sont déjà activées. Ils ne peuvent pas tracer dans les appels à midas.dll, cependant. –

Questions connexes