2013-10-25 2 views
0

Я перенесла свой код Delphi 7 в Delphi XE4. Я получаю сообщение об ошибке в методе LoadFromStram в Delphi xe4 но так же работает отлично для Delphi 7.EDOMParseError в Delphi XE4

Ошибка:

First chance exception at $7559C41F. Exception class EDOMParseError with message 
'XML document must have a top level element. 

Line: 0 
'. 
Process abc.exe (10516) 


var 
myStream : TStream; 
.... 
.... 
LoadFromStream(myStream); 

Я использую XMLDoc, XMLIntf, XMLDOM в пункте использования.

+1

Вы установили поток 'Position' в 0? – TLama

+0

@TLama - где указать позицию? –

+2

Использование, например. 'myStream.Position: = 0;', но это не должно быть вашей проблемой. Крис указал на этот поток. Вы можете проверить это, если вы оцениваете свойство myStream.Size. Если это 0, значит, у вас пустой поток и, следовательно, недопустимый XML. – TLama

ответ

2

Ваш поток либо пуст (например, вы загружены из недействительного файла, либо что-то еще, вы не даете достаточно кода, чтобы сообщить нам, как вы заполнили поток), или, как указал TLama, вы не сбросили начало. т. е. искать (0);

+2

Относительно примечания, кто-либо, находящий эту тему при устранении проблемы с SOAP, обычно получает эту ошибку при обработке пустого ответа SOAP. Обычно это вызвано таймаутом (система назначения заняла много времени, чтобы ответить), поэтому Delphi отказывается ждать ответа, поэтому ответ XML поэтому пуст/ноль. Затем вы взорваетесь с очень бесполезным «XML-документом должно быть сообщение верхнего уровня». –

Смежные вопросы