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

Вниз

IHMTLDocument2.write   Найти похожие ветки 

 
MetalFan ©   (2006-11-30 11:24) [0]

как этот метод правильно вызывать?
в MSDN есть пример:
IHTMLDocument2 *document; // Declared earlier in the code
HRESULT hresult = S_OK;
VARIANT *param;
SAFEARRAY *sfArray;
BSTR bstr = SysAllocString(OLESTR("Written by IHTMLDocument2::write()."));

// Creates a new one-dimensional array
sfArray = SafeArrayCreateVector(VT_VARIANT, 0, 1);

if (sfArray == NULL || document == NULL) {
 goto cleanup;
}

hresult = SafeArrayAccessData(sfArray,(LPVOID*) & param);
param->vt = VT_BSTR;
param->bstrVal = bstr;
hresult = SafeArrayUnaccessData(sfArray);
hresult = document->write(sfArray);

cleanup:
SysFreeString(bstr);
if (sfArray != NULL) {
 SafeArrayDestroy(sfArray);
}

на Delphi делаю так:
function GetHTMLDoc2FromString( const AStr: string ): IHTMLDocument2;
 var
   lSfArr: PSafeArray;
   lVar: PVariant;
   lWS: WideString;
 begin
   Result := CoHTMLDocument.Create as IHTMLDocument2;
   lSfArr := SafeArrayCreateVector(VT_VARIANT, 0, 1);
   if lSfArr <> nil then
   begin
     SafeArrayAccessData( lSfArr, Pointer(lVar) );
     lWS := AStr;
     TVarData(lVar^).VType := VT_BSTR;
     TVarData(lVar^).VOleStr := @lWS[1];
     SafeArrayUnaccessData( lSfArr );
     Result.write(lSfArr);
     //SafeArrayDestroy(lSfArr);  <<- на этой строчке иногда вываливает AV, без нее все ок.но как тогда память освобождать?
   end;
 end;

подскажите, где косяк?!


 
mailo   (2006-11-30 16:28) [1]

var v: Variant;
begin
v := VarArrayCreate([0, 1], varVariant);
v[0]:="Written by IHTMLDocument2::write().";
(Webbrowser1.Document as IHTMLDocument2).Write(PSafeArray(TVarData(v).VArray));
      (Webbrowser1.Document as IHTMLDocument2).close;

end;


 
MetalFan ©   (2006-11-30 17:42) [2]

>[1]
я все понимаю, но вопрос в другом вообщето)
мне ваш способ не нравится,
и меня интересует, почему не работает мой код



Страницы: 1 вся ветка

Текущий архив: 2007.01.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.064 c
1-1165407062
Tonich
2006-12-06 15:11
2007.01.28
Прозрачность


2-1168427926
Mishenka
2007-01-10 14:18
2007.01.28
Чем отличаются события формы OnClose и OnCloseQuery ?


1-1164894605
salexn
2006-11-30 16:50
2007.01.28
Как определить установлена ли нужная версия MSXML?


15-1168481935
Смаг
2007-01-11 05:18
2007.01.28
опере 9


3-1162659008
pirate
2006-11-04 19:50
2007.01.28
проблемы разработки программ для образования