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

Вниз

Проблема с 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.011 c
2-1222465968
SveTTT
2008-09-27 01:52
2008.11.09
Как избавиться от дублирования (SQL - full join)


2-1222794081
Petr
2008-09-30 21:01
2008.11.09
О смене пользователя


3-1209041604
Uno-84
2008-04-24 16:53
2008.11.09
Left join по двум параметрам


3-1208944407
TADOCommand
2008-04-23 13:53
2008.11.09
Зарезервировать ключ перед вставкой


4-1199736674
Compiler
2008-01-07 23:11
2008.11.09
Rect текста