fastreport6的frxpngimage.pas不能编译xe下

升级很痛苦,因为兼容问题。

fastreport6的frxpngimage.pas不能编译出现错误

procedure TChunkIDAT.CopyInterlacedRGB8(const Pass: Byte;
  Src, Dest, Trans{$IFDEF Store16bits}, Extra{$ENDIF}: pChar);
var
  Col: Integer;
begin
  {Get first column and enter in loop}
  Col := ColumnStart[Pass];
  Dest := pChar(Longint(Dest) + Col * 3);
  repeat
    {Copy this row}
    Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) + 2)^]; inc(Dest);
    Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) + 1)^]; inc(Dest);
    Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src)    )^]; inc(Dest);

    {Move to next column}
    inc(Src, 3);
    inc(Dest, ColumnIncrement[Pass] * 3 - 3);
    inc(Col, ColumnIncrement[Pass]);
  until Col >= ImageWidth;
end;

把all pChar改成类型PAnsiChar。自己查pChar和PAnsiChar在高版本的xe中有啥不同可知。

对于2009年以前版本的Delphi PChar 和 PAnsiChar 完全一样。他们都指向(Ansi)字符。

在D2009及以后: PChar 是一个指向 Char 的指针,它是一个unicode字符(一个 WideChar )。而 PAnsiChar 是一个指向 AnsiChar 的指针,- 顾名思义 - 一个ANSI字符

原文地址:https://www.cnblogs.com/usegear/p/11519267.html