L'erreur était en effet dans le traitement; parseError
échoue également et révèle la véritable erreur; Voir follow-up question pour cette erreur.
vieille question:
D'une certaine façon, parfois le code ci-dessous génère une exception lors du chargement XML en utilisant l'unité de Delphi XE MSXML dans. Il échoue sur Windows XP Professionnel x86 SP3 en utilisant MSXML6 et Windows 7 Édition Intégrale x64 SP1 en utilisant MSXML6.
procedure TXMLEOSErrorTestCase.Test;
var
XmlDocument: IXMLDOMDocument3;
XmlFileName: string;
begin
XmlDocument := CoFreeThreadedDOMDocument60.Create();
XmlFileName := TPath.Combine(TPath.GetDirectoryName(ParamStr(0)), '1-Normal.xml');
if not XmlDocument.load(XmlFileName) then
RaiseLastOSError();
end;
Cette erreur se produit au cours de la méthode XmlDocument.Load:
EOSError at $00423B2D
A call to an OS function failed
Je rognée XML vers le XML trouve ci-dessous.
Ceci est le vidage hexadécimal du fichier XML:
000000: 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 20 3D 20 <?xml version =
000010: 22 31 2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 "1.0" encoding="
000020: 57 69 6E 64 6F 77 73 2D 31 32 35 32 22 3F 3E 3C Windows-1252"?><
000030: 52 4F 57 20 43 69 74 79 3D 22 E0 22 2F 3E 0D 0A ROW City="."/>..
C'est le XML:
<?xml version = "1.0" encoding="Windows-1252"?><ROW City="à"/>
Pourquoi se produit l'erreur?
(Le XML se charge parfaitement dans .NET et d'autres environnements n'utilisant pas MSXML6).
--jeroen
L'erreur se produit-elle vraiment * pendant la méthode 'load', ou est-ce que l'exception que vous avez citée se produit réellement parce que * vous * appelez 'RaiseLastOSError'? Je soupçonne ce dernier. –