Главная страница
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.047 c
2-1168602839
DelphiLexx
2007-01-12 14:53
2007.01.28
Как в Memo выделять некоторые строки другим цветом


2-1168193651
blackgrin
2007-01-07 21:14
2007.01.28
латинская буква Е с acute


3-1162996402
pic509
2006-11-08 17:33
2007.01.28
как убрать пароль с базы данных ib5?


15-1166889146
vidiv
2006-12-23 18:52
2007.01.28
Два монитора и оверлеи


15-1168402510
Slider007
2007-01-10 07:15
2007.01.28
С днем рождения ! 10 января