把下面c++的代码给转成delphi VARIANT FaceImgData,UserData;
int ret;m_irface1.GetSelectData(&FaceImgData, &UserData, &ret);BYTE* faceImage = new BYTE[m_irface1.GetUserImageSize()];
faceImage=FaceImgData.pbVal;
int ret;m_irface1.GetSelectData(&FaceImgData, &UserData, &ret);BYTE* faceImage = new BYTE[m_irface1.GetUserImageSize()];
faceImage=FaceImgData.pbVal;
FaceImgData,UserData: OleVariant;
ret: Integer;
faceImage: array of Byte;
begin
m_irface1.GetSelectData(@FaceImgData, @UserData, @ret); SetLength(faceImage,m_irface1.GetUserImageSize());
Move(TVarData(FaceImgData).VPointer^,faceImage[0], Length(faceImage ));
end;
faceImage=FaceImgData.pbVal;这里第二行只是把指针faceImage指向了另外一个地址,事实上会导致上面一行代码当中分配的内存缺失管理,而造成内存丢失,即程序运行多次之后会发现占用内存暴涨。
m_irface1.GetSelectData(@FaceImgData, @UserData, @ret);这一句有问题呀。delphi中认出这个函数的参数是 olevariant,现在加一个取地址的报[Error] Unit1.pas(111): Types of actual and formal var parameters must be identical,