Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.04.2014, 09:03
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию ошибка

Доброе утро!
Помогите с ошибкой.
Есть код:
Код:
procedure TForm2.wb1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  f, i: integer;
  res_post: string;
begin
for f := 0 to wb1.OleObject.Document.forms.Length - 1 do
    begin
      for i := 0 to wb1.OleObject.Document.forms.Item(f).elements.Length - 1 do
            if wb1.OleObject.Document.forms.Item(f).elements.item(i).name = 'vk_page_userid'
              then
                res_post:=wb1.OleObject.Document.forms.Item(f).elements.item(i).value;
                edt1.Text:=res_post;
                stbsht5.PageControl.ActivePageIndex:=0;
                Get_MyPageInfo(edt1.Text);
    end;
end;
У мен есть html код в программе, при загрузке в webbrowser1(wb1) выдает ошибку "Access violation at address 00491024", после ошибки код всеравно загружаеться.
Процедура
Код:
procedure TForm2.wb1BeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
отлавливает значение передаваемое методом POST в программе
Код HTML:
<form action="" method="POST"><input type="hidden" name="page_userid" value="'+str+'"><input type="submit" name="page_userid_submit" value="Открыть"></form>
зачение "page_userid" и нужно узнать.
Выходит 2 проблемы:
1) Ошибка "Access violation" когда нажимаю на кнопку, в которой html код загружаеться в wb1.
2) У меня в коде много кода
Код HTML:
<form action="" method="POST"><input type="hidden" name="page_userid" value="'+str+'"><input type="submit" name="page_userid_submit" value="Открыть"></form>
только с разными значениями. Когда я нажимаю на кнопку "Открыть", оно находит все значения из поля "page_userid", а нужно, чтобы было только то, где нажал пользователь.
Ответить с цитированием
  #2  
Старый 03.04.2014, 09:25
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от JeReK5542
У мен есть html код в программе, при загрузке в webbrowser1(wb1) выдает ошибку "Access violation at address 00491024", после ошибки код всеравно загружаеться.
При появлении такой ошибки нужно в первую очередь смотреть что находится по этому (т.е. $00491024) адресу ( Меню -> Search -> Find Error... ) - после этого вопрос чаще всего отпадает.
Ответить с цитированием
  #3  
Старый 04.04.2014, 16:07
JeReK5542 JeReK5542 вне форума
Новичок
 
Регистрация: 18.11.2013
Сообщения: 61
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

вообще после ошибки показывает на ету строку:
Код:
for f := 0 to wb1.OleObject.Document.forms.Length - 1 do
зделал так, как вы написали но че дальше делать незнаю, я assembler толком незнаю

и вот еще:
Код:
while (str_mas<=str_mascount_get-1) do
begin
if (str_mas<=str_mascount_get-1) then
begin
html_fs:=htmls(html_fs)+'<table cellspacing="0">';
html_fs:=htmls(html_fs)+'<tr>';
html_fs:=htmls(html_fs)+'<td width="10%" class="td_prd" style="border-top:0px;"><img src="'+vk_avatar[str_mas]+'"></img></td>';
html_fs:=htmls(html_fs)+'<td width="30%" class="td_prd" style="border-left:0px;border-top:0px;">'+vk_firstname[str_mas]+' '+vk_lastname[str_mas]+'</td>';
html_fs:=htmls(html_fs)+'<td width="7%" class="td_prd" style="border-left:0px;border-top:0px;">'+vk_online_text+'</td>';
html_fs:=htmls(html_fs)+'<td class="td_prd" style="border-left:0px;border-top:0px;"><form action="" method="POST"><input type="hidden" name="vk_page_userid" value="'+vk_userid[str_mas]+'"><input type="submit" name="vk_page_userid_submit" value="Submit"></form></td>';
html_fs:=htmls(html_fs)+'</tr>';
html_fs:=htmls(html_fs)+'</table>';
str_mas:=str_mas+1;
end;
end;
ето выводит информацию о ВК пользователях в webbrowser1
Код HTML:
<input type="hidden" name="vk_page_userid" value="'+vk_userid[str_mas]+'">
- вот передаеться id, но когда наживаю на кнопку выбраного пользователя
Код HTML:
<input type="submit" name="vk_page_userid_submit" value="Submit">
webbrowser выводит с начала до конца все id, тоисть vk_page_userid, а не тот, который я выбрал.

и вот если изменить код:
Код:
procedure TForm2.wb1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  f, i: integer;
  res_post: string;
begin
for f := 0 to wb1.OleObject.Document.forms.Length - 1 do
    begin
      for i := 0 to wb1.OleObject.Document.forms.Item(f).elements.Length - 1 do
            if wb1.OleObject.Document.forms.Item(f).elements.item(i).name = 'vk_page_userid'
              then
                res_post:=wb1.OleObject.Document.forms.Item(f).elements.item(i).value;
                edt1.Text:=res_post;
                stbsht5.PageControl.ActivePageIndex:=0;
                Get_MyPageInfo(edt1.Text);
    end;
end;
на такой вот:
Код:
procedure TForm2.WebBrowser1NavigateComplete2(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  f, i: integer;
  res_post: string;
begin
for f := 0 to wb1.OleObject.Document.forms.Length - 1 do
    begin
      for i := 0 to wb1.OleObject.Document.forms.Item(f).elements.Length - 1 do
            if wb1.OleObject.Document.forms.Item(f).elements.item(i).name = 'vk_page_userid'
              then
                res_post:=wb1.OleObject.Document.forms.Item(f).elements.item(i).value;
                edt1.Text:=res_post;
                stbsht5.PageControl.ActivePageIndex:=0;
                Get_MyPageInfo(edt1.Text);
    end;
end;
то все запускается без "Access violation", но значения "vk_page_userid" получаю все без нажатия кнопки

все решил проблему так:
Код:
procedure TForm2.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
 var
    post_zapros:string;
    post_hran: TStringList;
    post_userid: string;
begin
  post_hran:=TStringList.Create;
  try
  if Length(PostData) > 10 then
    begin
      post_zapros:=Variant2Str(PostData);
      post_hran.Text:=URLDecode(post_zapros);
      post_userid:=Pars('vk_page_userid=', post_hran.Text, '&');
      stbsht5.PageControl.ActivePageIndex:=0;
      Get_MyPageInfo(post_userid);
    end;
  finally
  post_hran.Free;
  end;
end;

Последний раз редактировалось M.A.D.M.A.N., 04.04.2014 в 21:56.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter