Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема Variant *PostData

56K
14 ноября 2010 года
warhazar
7 / / 13.04.2010
Подскажите пожалуйста!
Как просмотреть информацию передаваемую на сервер (метод post)??

На форме компонент CppWebBrowser1 и Memo1
Событие OnBeforeNavigate2
Код:
void __fastcall TForm1::CppWebBrowser1BeforeNavigate2(TObject *Sender,
      LPDISPATCH pDisp, Variant *URL, Variant *Flags,
      Variant *TargetFrameName, Variant *PostData, Variant *Headers,
      VARIANT_BOOL *Cancel)
{
String a = *URL;
Form1->Memo1->Lines->Add(a);

a=*PostData;
Form1->Memo1->Lines->Add(a);

a=*TargetFrameName;
Form1->Memo1->Lines->Add(a);

a=*Headers;
Form1->Memo1->Lines->Add(a);
}


Судя по справке в Variant *PostData храниться передаваемая информация
Но она почему то отображаются так "???????????+??????????????????????????????????n"

а URL и Headers нормально.

Заранее спасибо за любую помощь.
1
15 ноября 2010 года
kot_
7.3K / / 20.01.2000
Что значит - "посмотреть"?
Приведи данные к отображаемому типу - и любуйся.
если речь идет о дебилдере 6 - то надо выполнять конвертацию.
И читать здесь
56K
15 ноября 2010 года
warhazar
7 / / 13.04.2010
Давайте обясню более наглядно.
есть html страница вот она
 
Код:
<form method="post" action="1.php">
Логин:<br><input type="edit" name="login"><br>
Пароль:<br><input type="password" name="pas"><br>
<input type="submit" value="Ok">
</form>

как видно она передает в 1.php методом post информацию которую ввели.
1.php в свою очередь вот он

 
Код:
<?php
echo '<pre>';
print_r($_POST);
?>

принимает и отображает пост масив.
И виходит следующее
Array
(
[login] => 2
[pas] => 2
)
Вот ето я и хочу виципить!
в дебилдере 6 мне не понятно почему в *PostData отображаеться ето ??????2
И как получить ето [login] => 2 [pas] => 2??

Приведи данные к отображаемому типу
a=*PostData;
Form1->Memo1->Lines->Add(a);
А ето разве я не привел к отображаемому типу??
как выполнять конвертацию.
1
16 ноября 2010 года
kot_
7.3K / / 20.01.2000
нет не привел.
У тебя передаваемые данные представлены в UTF-8 либо в Unicode. Соотвественно тебе либо надо использовать те IDE которые работают нормально с юникодом, либо выполнять преобразование например WideString -> AnsiString, например используя функцию WideCharToMultiByte.
Используй поиск по форуму - тема обсуждалась.
246
16 ноября 2010 года
GIZMO
1.8K / / 30.07.2004
Цитата: kot_

У тебя передаваемые данные представлены в UTF-8 либо в Unicode. Соотвественно тебе либо надо использовать те IDE которые работают нормально с юникодом, либо выполнять преобразование например WideString -> AnsiString, например используя функцию WideCharToMultiByte.


Это тут ни причем ... URL и Headers есть - variant pointer to a BSTR, а PostData содержит SafeArray Bytes (указатель на SAFEARRAY) ясен пень если делать так

 
Код:
a=*PostData;

то получится лажа...
аффтар учись работать с вариантными массивами...
1
16 ноября 2010 года
kot_
7.3K / / 20.01.2000
ну это само собой что так нельзя.
56K
25 ноября 2010 года
warhazar
7 / / 13.04.2010
#include "Shlwapi.h"
STDMETHODIMP CWebOCWindow::BeforeNavigate2(IDispatch *pDisp, VARIANT *URL,
VARIANT *Flags, VARIANT *TargetFrameName,
VARIANT *PostData, VARIANT *Headers,
VARIANT_BOOL *Cancel)
{
if (PostData != NULL && PostData->vt == (VT_VARIANT|VT_BYREF) && PostData->pvarVal->vt != VT_EMPTY )
{

char *szTemp = NULL, *szPostData = NULL;
long plLbound, plUbound;

SAFEARRAY *parrTemp = PostData -> pvarVal->parray;
SafeArrayAccessData(parrTemp , (void HUGEP **) &szTemp);

SafeArrayGetLBound(parrTemp , 1, &plLbound);
SafeArrayGetUBound(parrTemp , 1, &plUbound);

szPostData = new char[plUbound - plLbound + 2];
StrCpyN(szPostData, szTemp, plUbound - plLbound + 1);
szPostData[plUbound-plLbound] = '\0';
SafeArrayUnaccessData(parrTemp);

Form1->Memo1->Lines->Add(URLDecode(szPostData));

delete[] szPostData;
}
return S_OK;
}

Проблема решена тему можна закрить!
инфа тут http://support.microsoft.com/kb/256195
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог