Использование этого кода для получения rss сайта. Этот код отлично подходит для моего компьютера и многих других компьютеров. Но на некоторых компьютерах (Windows XP или 7) я получаю эту ошибку: MSXML не установленXML: MSXML не установлен
Как исправить эту проблему? Что не так?
Вот код:
procedure My_Thread.Execute;
var
http : tidhttp;
strm : tmemorystream;
str,sTitle, sDec ,er : string;
StartItemNode : IXMLNode;
ANode : IXMLNode;
XMLDoc : IXMLDocument;
begin
http := tidhttp.Create();
strm := tmemorystream.Create;
try
http.Get('http://www.sample.com/rss.xml',strm); //Download the RSS file
SetString(str,PANSIChar(strm.Memory),strm.Size);
XMLDoc := LoadXMLData(str);
StartItemNode := XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item');
ANode := StartItemNode;
i := 0;
repeat
inc(i);
sTitle := ANode.ChildNodes['title'].Text;
sDec := ANode.ChildNodes['description'].Text;
Synchronize(procedure begin //Synchronize? I'm using threads
case I of
1: begin
main_frm.edit1.text := sTitle; //main_frm is my form
main_frm.edit2.text := sDec;
end;
2: begin
main_frm.edit3.text := sTitle;
main_frm.edit4.text := sDec;
end;
3: begin
main_frm.edit5.text := sTitle;
main_frm.edit6.text := sDec;
end;
end;
ANode := ANode.NextSibling;
end);
until ANode = nil;
http.Free;
strm.Free;
except
on E: Exception do
begin
er := e.Message;
Synchronize(procedure begin
ShowMessage(er);
end);
end;
end;
end;
Как вы видите, я использованияКонтактная темы. Поэтому понадобилось Synchronize
.
Вы получаете это сообщение из исключения, не так ли? Отладчик прерывает вашу программу и сообщает вам, где именно произошло исключение, не так ли? Так что отлаживайте его. По крайней мере, включите источник исключения в свой вопрос. –
Это полностью в стороне, но 'Dec' - это функция (в модуле' System'), которая используется для уменьшения целого числа. Здесь вы объявляете строковую переменную 'Dec', которая скрывает эту функцию. Это плохая практика, особенно для такой общей функции, как 'dec' - вы должны использовать уникальное имя для своих переменных. –
@J ... Исправлено. Спасибо – Sky