Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

PostData [D5, WinXP]


BlackSun ©   (2002-07-24 20:22:00) 

Народ, не подскажите, как бы узнать, что содержится в PostData при вызове OnBeforeNavigate в компоненте TWebBrowser?


BlackSun   (2002-07-30 21:44:00) [1]

Я посмотрел, эта проблема уже неоднократно поднималась, но я так и не нашел решения. Некоторые советовали преобразовывать PostData в Unicode, но ничего не вышло. Просто в PostData стоят одни вопросы, и никак не узнать, что за ними скрывается. И преобразование в тсроку как раз и дает эти вопросы.


int64   (2002-07-28 06:52:00) [2]

Если не посылаешь, откуда им там взятся!

Ты вообще знаешь, что такое метод POST?

//Нажми на эту кнопку:

procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
s:= "<form action="c:\temp\15.htm" method=post>"+
"<INPUT TYPE=TEXT MAXLENGTH=40 SIZE=22 NAME=name>"+
"<INPUT TYPE=submit>"+
"</form>";
WebBrowser1.Navigate("about:"+s);
end;


//Заполни и отошли форму в документе (на любой адресс).

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
caption:= VarArrayToString(PostData);
end;


Всё работает.


BlackSun   (2002-07-27 20:20:00) [3]

Я не посылаю данные, я перехватываю их во время события OnBeforeNavigate, мне и нужно узнать, что там за данные.


int64   (2002-07-26 09:14:00) [4]

А как ты данные посылаешь?


BlackSun   (2002-07-26 07:06:00) [5]

Делаю все как ты написал, но программа ни разу не попадает в этот цикл, хотя пишет, что PostData: variant array of byte;
Если сделать принудительно цикл, то вылетает с ошибкой, что это не variant of array.
Кстати, вместо VarIsArray(V,True) нужно писать VarIsArray(V)...


int64   (2002-07-24 21:51:00) [6]

Например, перевести в стринг:

function VarArrayToString(const V: Variant): string;
var
i, j: Integer;
begin
if VarIsArray(V, True) then
for I := 0 to VarArrayHighBound(V, 1) do
begin
j := V[i];
result := result + chr(j);
end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо