Главная страница
    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.46 MB
Время: 0.003 c
6-1269679629
syserg
2010-03-27 11:47
2013.10.06
Получить список имен файлов на сайте


3-1293263111
dik59
2010-12-25 10:45
2013.10.06
Создание домена


15-1355480016
azlk52
2012-12-14 14:13
2013.10.06
Запрет приложение вконтакте


15-1367086920
О-Сознание
2013-04-27 22:22
2013.10.06
Поиск на Хабре.


15-1366378587
Книжколюб
2013-04-19 17:36
2013.10.06
Кто-нибудь пользуется электронными книгами на базе E-Ink ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский