请教关于DELPHI 指针加减法后MOVE 不接受的问题
本帖最后由 YiLuSuiYun 于 2013-10-01 03:16:59 编辑
procedure TDIB.DataToPointer(var P:Pointer);
var
BF: TBitmapFileHeader;
begin
if Empty then Exit;
if P <> nil then Exit;
if not FImage.FMemoryImage then
GdiFlush;
with BF do
begin
bfType := BitmapFileType;
bfOffBits := SizeOf(TBitmapFileHeader) + BitmapInfoSize;
bfSize := bfOffBits + FImage.FBitmapInfo^.bmiHeader.biSizeImage;
bfReserved1 := 0;
bfReserved2 := 0;
end;
GetMem(P,BF.bfSize);
Move(BF,P,SizeOf(TBitmapFileHeader));
Move(FImage.FBitmapInfo, Pointer(Integer(P)+Sizeof(TBitMapFileHeader)),FImage.FBitmapInfoSize);
move(FImage.FPBits, Pointer(Integer(P)+Sizeof(TBitMapFileHeader)+FImage.FBitmapInfoSize), FImage.FBitmapInfo.bmiHeader.biSizeImage);
end;