VC++ 代码转 Delphi解决办法

VC++ 代码转 Delphi
#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   上的代码)。

哪位高手帮转一下?

------解决方案--------------------
http://www.developpez.net/forums/showthread.php?t=157835
------解决方案--------------------
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;