Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
ВнизКак обработать такую структуру:Variant Array of Variant ? Найти похожие ветки
← →
Secam (2002-07-12 20:06) [0]Уважаемые мастера,
Подскажите пожалуйста, как работать с Variant Array of Variant?
Эту надпись я увидел в списке watch, когда попытался посмотреть значение переменной PostData, События OnBeforeNavigate2 в TWebBrowser.
В модуле DSIntF.pas я нашел функцию VariantArraytoString, но она с этим зверем не работает.
Как узнать, что внутри этого Variant Array ?
← →
int64 (2002-07-12 20:52) [1]Такой код работает:
procedure TForm1.Button1Click(Sender: TObject);
var V: OleVariant;
begin
V:= StringToVariantArray(Caption);
Caption:= VariantArrayToString(V)+VariantArrayToString(V);
end;
А если ты хочешь, чтоб работал такой:
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
Caption:= VariantArrayToString(PostData);
end;
, то в PostData должно что-то быть перед отправкой.
Этот текст я послал через WebBrowser1 (зашёл на страницу
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1026489978&n=0 ,
набрал всё это и нажал добавить)
Сейчас посмотрю, появилось ли что-нибудь в Caption.
← →
int64 (2002-07-12 20:54) [2]Нда. Ничего. :((
← →
Secam (2002-07-12 22:25) [3]Дополнение ...
В исходниках функции VariantArrayToString из DSIntF.pas
есть такое условие:
if VarIsArray(V) and (VarType(V) and varTypeMask = varByte) then
т.е. насколько я понимаю массив должен состоять из byte иначе результат - пустая строка.
А если массив не из байт а из строк или еще из чего нибудь ?
как его прочитать и как узнать из чего он состоит ?
← →
Secam (2002-07-12 22:57) [4]VarIsArray(PostData) дает false
(VarType(V) and varTypeMask) = $000c, что соответствует varVariant.
Т.е. получается, что PostData вообще не массив !
Именно такое сообщение возникает при попытке вызвать
VarArrayLock(PostData).
Что значит VarVariant и как из него получить данные ?
← →
int64 (2002-07-13 02:40) [5]Всё дело в использовании функции VarIsArray. Она перегружаемая.
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;
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
caption:= VarArrayToString(PostData);
end;
← →
Secam (2002-07-14 00:35) [6]Работает !!!
СПАСИБО !!!!!!!!!!!
просто спас !!!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c