Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.06;
Скачать: CL | DM;

Вниз

не могу понять почему ошибка   Найти похожие ветки 

 
lordalexander   (2013-01-16 23:40) [0]

Здравствуйте
Есть процедура
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);

Выдают ошибку
Помогите понять почему


 
clickmaker ©   (2013-01-16 23:46) [1]

> Помогите понять почему

а из текста ошибки не понятно?


 
lordalexander   (2013-01-17 00:04) [2]

если добавить
if aHref<>"" then
Begin
после aHref := links.Item(x).href;

но перед
if (aHref[1] = "/") then

и добавить End  после strings.Add(aHref) ;
решение правильное?


 
Германн ©   (2013-01-17 02:01) [3]


> решение правильно

Нет.
Правильное решение не ищется методом тыка.


 
lordalexander   (2013-01-17 03:19) [4]

чем же оно не верно седел на дебаге и проверял увидел,  что если в переменную нечего не попадает то все выдает ошибку...

У меня еще одна проблема с этим куском кода возникла.
Если в процедуру попадает  вот этот линк  http://www.ignio.com/r/daily/tod/cancer.html
то не могу выйти вот с этой строки
while iDoc.readyState<>"complete" do Application.ProcessMessages;

не  могу понять почему и как решить проблему


 
Anatoly Podgoretsky ©   (2013-01-17 08:29) [5]

> lordalexander  (17.01.2013 03:19:04)  [4]

Потому что ready State<>"complete"


 
lordalexander   (2013-01-17 10:59) [6]

А как нужно?


 
lordalexander   (2013-01-17 11:20) [7]

убрал из кода

iDoc.designMode := "off";
while iDoc.readyState<>"complete" do
Application.ProcessMessages;

вроде все нормально  если есть другое решение подскажите
блогадарю



Страницы: 1 вся ветка

Текущий архив: 2013.10.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
15-1366925402
Юрий
2013-04-26 01:30
2013.10.06
С днем рождения ! 26 апреля 2013 пятница


2-1358407010
Cobalt
2013-01-17 11:16
2013.10.06
Почему компилируется?


4-1267109067
davinchi
2010-02-25 17:44
2013.10.06
Отслеживание обращений к файловой системе?


2-1358409551
sergeyleroy
2013-01-17 11:59
2013.10.06
Скачок записей в DbGridEh при использование Bookmark


2-1358420049
Burn
2013-01-17 14:54
2013.10.06
try..except