对VC不熟悉,下列VC函数如何转换成Delphi.
void CImageBuffer::ByteToVariant(byte *bData, long bSize, VARIANT *pOutAarry)
{
SAFEARRAY* psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements =bSize;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);

for (long i = 0; i <bSize; i++)
SafeArrayPutElement (psa, &i,bData++);
pOutAarry->vt = VT_ARRAY | VT_UI1;
pOutAarry->parray = psa;}

解决方案 »

  1.   

    safearray在Delphi中用什么类型代替还不知道,学习
      

  2.   

    试试这个:procedure ByteToVariant(bData: PByte;  bSize: Longint;  var pOutArray: VARIANT);
    var
      pOutData: PByte;
      i : Integer;
    begin
      pOutArray := VarArrayCreate([0, bSize - 1], varByte);
      pOutData := VarArrayLock(pOutArray);
      try
        for i := 1 to bSize do
        begin
          pOutData^ := bData^;
          inc(pOutData);
          inc(bData);
        end;
      finally
        VarArrayUnlock(pOutArray);
      end;
    end;