Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
ВнизПроблема с all.tags(string?????) ? Найти похожие ветки
← →
Johnnnnnn (2008-09-30 08:24) [0]В общем пишу такой код:
procedure lpc(inputname:string; tagname:string);
var
i:integer;
begin
amdoc:=form1.webbrowser2.Document as IHtmlDocument2;
for i:=0 to amdoc.all.tags(tagname).length-1 do begin
try
if amdoc.all.tags(tagname).item(i).name=inputname then showmessage("dfgf");
except
end;
end;
end;
procedure TForm1.WebBrowser2DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
lpc("q", "INPUT");
end;
ну и потом можно браузером navigate на www.google.com должно появиться сообщение НО! его НЕТ! ок тогда пробуем так
procedure lpc(inputname:string; tagname:string);
var
i:integer;
begin
Edit1.text:=tagname;
amdoc:=form1.webbrowser2.Document as IHtmlDocument2;
for i:=0 to amdoc.all.tags(edit1.text).length-1 do begin
try
if amdoc.all.tags(edit1.text).item(i).name=inputname then showmessage("dfgf");
except
end;
end;
end;
идем к гуглу сообщение ЕСТЬ! че за беда такая мне впринципе пофиг могу и эдит на форму кинуть но понять просто хочу в чем прикол?
← →
Сергей М. © (2008-09-30 08:54) [1]
> в чем прикол?
А нет никакого прикола - оба варианта абсолютно эквивалентны по своей логике.
← →
Johnnnn (2008-09-30 09:18) [2]Если так то почему первый не работает?
← →
Johnnnn (2008-09-30 09:25) [3]Обьяснб по подробнее вот ето:
procedure lpc(inputname:string; tagname:string);
var
i:integer;
begin
amdoc:=form1.webbrowser2.Document as IHtmlDocument2;
for i:=0 to amdoc.all.tags(tagname).length-1 do begin
try
if amdoc.all.tags(tagname).item(i).name=inputname then showmessage("dfgf");
except
end;
end;
end;
процедура которая вызывается по событию браузера когда документ загрузился. Ета процедура дожна показывать сообщение когда находит таг - tagname к примеру input с именем - inputname к примеру имя будает "q" (такое имя у поля поиска на сайте гугла) дак вот когда в ету процедуру я пытаюсь передать значение в переменной inputname напрямую то так почемуто не получается а когда сначала edit1.text присваиваю edit1.text:=tagname; а потом уже сравниваю amdoc.all.tags(edit1.text !!!!!!!!!).item(i).name=inputname то только в етом варианте оно работает. Вот отсюда и вопрос че за дела?
← →
Сергей М. © (2008-09-30 09:32) [4]
> почему первый не работает?
А ты у отладчика спрашивал ?
← →
Johnnnn (2008-09-30 09:38) [5]Хороший вопрос счас попробую чето зделать
← →
Vlad Oshin © (2008-09-30 09:40) [6]Через QueryInterface лучше писать
procedure lpc2(inputname:string; tagname:string);
var
i:integer;
Coll : IHTMLElementCollection;
amdoc:IHtmlDocument2;
begin
if form1.WebBrowser1.Document.QueryInterface(IhtmlDocument2, amDoc)= S_OK then
begin
amdoc.all.tags(tagname).QueryInterface(IHTMLElementCollection,coll);
for i:=0 to Coll.length-1 do
if (HTMLInputElement(Coll.item(i,varEmpty)).name=inputname) then
HTMLInputElement(Coll.item(i,varEmpty)).value:="Found!!!";
end;
end;
← →
Johnnnn (2008-09-30 09:48) [7]Vlad Oshin - Спасибо!!!!!!!
По поводу отладчика он тут как вы знаете не при делах но если запросить без try except end vot tak
for i:=0 to amdoc.all.tags("input").length-1 do begin
if amdoc.all.tags(tagnamee).item(i).name=itemname then showmessage("dfgf");
end;
то выдает Access violation at address 004579E3 in module "Project.exe". Read of address 00000000.
← →
Сергей М. © (2008-09-30 09:52) [8]
> он тут как вы знаете не при делах
Да ты что ?! А мужики-то и не знают)
← →
Сергей М. © (2008-09-30 09:54) [9]
> если запросить без try except
> то выдает Access violation
Значит верь глазам своим - элемент-тэг с именем tagnamee в коллекции tags не существует.
← →
Johnnnn (2008-09-30 09:55) [10]Фиг его знает часто по интернету трудно понять где человек иронизирует а где нет в реальности по оттенку голоса ето можно понять а так трудно вобщем. Поетому незнаю как на ваш ответ реагировать тут используется позднее связывание и отладчик незнает как ето проверить.
← →
Johnnnn (2008-09-30 09:57) [11]Значит верь глазам своим - элемент-тэг с именем tagnamee в коллекции tags не существует. - видиш суслика? и я не вижу! а он есть! ЕСТЬ ТАМ INPUT!!!!!!!! яж говорю когда присваиваеш значение переменной сначала edit.text то все работает!!!!!!!!!!!!!!! ОШИБКИ В НАПИСАНИИ БЫТЬ НЕ МОЖЕТ!
← →
Сергей М. © (2008-09-30 10:01) [12]
> отладчик незнает как ето проверить
Зато он прекрасно знает как показать фактическое значение параметра tagnamee непосредственно перед обращением к св-ву-коллекции Tags.
> ОШИБКИ В НАПИСАНИИ БЫТЬ НЕ МОЖЕТ!
Опять орать взялся ?)
← →
Сергей М. © (2008-09-30 10:05) [13]
> тут используется позднее связывание и отладчик незнает как
> ето проверить
Можно подумать, что если бы было раннее связывание, то отладчик был бы "при делах")
← →
Johnnnn (2008-09-30 10:06) [14]Зато он прекрасно знает как показать фактическое значение параметра tagnamee непосредственно перед обращением к св-ву-коллекции Tags. - понял счас буду пробовать както ето увидеть, если вы неподскажите как ето пошагово зделать то надеюсь поиск в гугле по - как в отладчике просмотреть значение переменной - мне поможет. Спасибо!
← →
Johnnnn (2008-09-30 10:08) [15]Да кажется поможет
← →
Johnnnn (2008-09-30 10:11) [16]Можно подумать, что если бы было раннее связывание, то отладчик был бы "при делах") - понимаете я ламер! поетому все вот так!
← →
Сергей М. © (2008-09-30 10:14) [17]Проще пареной репы - ставишь брейкпойнт
if amdoc.all.tags(tagname).item(i).name=inputname then showmessage("dfgf");
<-- здесь
ловишь его, наводишь мышиный курсор на выделенный жирным идентификатор переменной и - о чудо ! - отладчик "при делах" показывает хинт с содержимым переменной)
← →
Vlad Oshin © (2008-09-30 10:14) [18]да просто может интерфейс не подхватывает.. а явно если, то может подхватывает.
Почему с edit работает - загадка. Может за кулисами что инициализируется, если к контрлам обращаться,
короче, хз
Но метод с взятием интерморды работает даже с IE
← →
Сергей М. © (2008-09-30 10:15) [19]
> я ламер!
И ты этим гордишься ?)
← →
Johnnnn (2008-09-30 10:25) [20]И ты этим гордишься ?) - скажем так лучше понимать ето чем даже етого!!! непонимать:) за советы спасибо счас времени нет разбирать вечером с работы вернусть буду думать че с етим делать всем скорей всего воспользуюсь советом Vlad Oshin. Всем спасибо!
← →
Сергей М. © (2008-09-30 10:27) [21]
> Johnnnn (30.09.08 10:25) [20]
http://www.google.ru/search?complete=1&hl=ru&newwindow=1&client=firefox-a&rls=org.mozilla:ru:official&hs=WNt&defl=ru&q=define:%D0%9B%D0%B0%D0%BC%D0%B5%D1%80&sa=X&oi=glossary_definition&ct=title
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c