VC++ 代码转 Delphi

wanggongqin 2007-04-02 02:22:04
#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);

MessageBox(szPostData);

delete[] szPostData;
}
return S_OK;
}

其实我是想把 WebBrowser 中 BeforeNavigate2 事件中的 PostData 解析出来,
找不到 Delphi 代码,但是找到了 VC++ 代码(这是 MSDN 上的代码)。

哪位高手帮转一下?
...全文
228 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
怀柔老纪 2007-12-18
  • 打赏
  • 举报
回复
pbcao 的不错。使用方便简单明了。
wanggongqin 2007-04-02
  • 打赏
  • 举报
回复
终于可以了,谢谢!
pbcao 2007-04-02
  • 打赏
  • 举报
回复
var
index, lowVal, highVal, vType: integer;
oleArray: PSafeArray;
oleObj: oleVariant;
tmp: string;
begin
if (not (VarIsType(PostData, VT_NULL)) and (VarIsType(PostData, VT_VARIANT) or
VarIsType(PostData, VT_BYREF))) and
(not VarIsType(PostData, VT_EMPTY)) then
begin
index := VarArrayDimCount(PostData);
lowVal := VarArrayLowBound(PostData, index);
highVal := VarArrayHighBound(PostData, index);
oleArray := TVariantArg(PostData).pArray;

for index := lowVal to highVal do
begin
SafeArrayGetElement(oleArray, index, oleObj);
tmp := tmp + VarToStr(oleObj);
end;
ShowMessage(tmp);
end;
ccrun.com 2007-04-02
  • 打赏
  • 举报
回复
http://www.developpez.net/forums/showthread.php?t=157835

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧