Форум: "Начинающим";
Текущий архив: 2013.10.06;
Скачать: [xml.tar.bz2];
Внизне могу понять почему ошибка Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c