![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не могу понять почему ошибка [D7, WinXP]
lordalexander © (2013-01-16 23:40:00)Здравствуйте
Есть процедура
procedure TForm2.ExtractLinks(const url: String; const strings: TStrings);
var
iDoc : IHTMLDocument2;
strHTML : string;
v : Variant;
x : integer;
links : OleVariant;
docURL : string;
URI : TidURI;
aHref : string;
idHTTP : TidHTTP;
begin
strings.Clear;
URI := TidURI.Create(url) ;
try
docURL := 'http://' + URI.Host;
if URI.Path <> '/' then docURL := docURL + URI.Path;
finally
URI.Free;
end;
iDoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
try
iDoc.designMode := 'on';
while iDoc.readyState <> 'complete' do Application.ProcessMessages;
v := VarArrayCreate([0,0],VarVariant) ;
idHTTP := TidHTTP.Create(nil) ;
try
strHTML := idHTTP.Get(url) ;
finally
idHTTP.Free;
end;
v[0]:= strHTML;
iDoc.write(PSafeArray(System.TVarData(v).VArray)) ;
iDoc.designMode := 'off';
while iDoc.readyState<>'complete' do Application.ProcessMessages;
links := iDoc.all.tags('A') ;
if links.Length > 0 then
begin for x := 1 to -1 + links.Length do
begin
aHref := links.Item(x).href;
if (aHref[1] = '/') then
aHref := docURL + aHref
else if Pos('about:', aHref) = 1
then aHref := docURL + Copy(aHref, 8, Length(aHref)) ;
strings.Add(aHref) ;
end;
end;
finally
iDoc := nil;
end;
end;
Вызываю ее так
ExtractLinks( http://www.delphimaster.ru/, memo2.Lines);
Выдают ошибку
Помогите понять почему
lordalexander (2013-01-17 11:20:00) [1]убрал из кода
iDoc.designMode := 'off';
while iDoc.readyState<>'complete' do
Application.ProcessMessages;
вроде все нормально если есть другое решение подскажите
блогадарю
lordalexander (2013-01-17 10:59:00) [2]А как нужно?
Anatoly Podgoretsky (2013-01-17 08:29:00) [3]> lordalexander (17.01.2013 03:19:04) [4]
Потому что ready State<>'complete'
lordalexander (2013-01-17 03:19:00) [4]чем же оно не верно седел на дебаге и проверял увидел, что если в переменную нечего не попадает то все выдает ошибку...
У меня еще одна проблема с этим куском кода возникла.
Если в процедуру попадает вот этот линк http://www.ignio.com/r/daily/tod/cancer.html
то не могу выйти вот с этой строки
while iDoc.readyState<>'complete' do Application.ProcessMessages;
не могу понять почему и как решить проблему
Германн (2013-01-17 02:01:00) [5]
> решение правильно
Нет.
Правильное решение не ищется методом тыка.
lordalexander (2013-01-17 00:04:00) [6]если добавить
if aHref<>'' then
Begin
после aHref := links.Item(x).href;
но перед
if (aHref[1] = '/') then
и добавить End после strings.Add(aHref) ;
решение правильное?
clickmaker (2013-01-16 23:46:00) [7]> Помогите понять почему
а из текста ошибки не понятно?