不同指针类型的不兼容类型

时间:2018-08-04 03:26:33

标签: delphi delphi-10.2-tokyo quickreports

我正在Delphi 10.2中使用快速报告6。当我将quickreport源路径添加到库路径时,我在qrpdffilt.pas上收到不兼容的类型错误。

Var
  P: ^ pos2table;
  Buff: array of ansichar;
  d: dword;
  RGBCol:TRGBColor;
  PColor: TColor;

  Pos2table is of type packed array

  Incompatible types issue comes for following lines

  P:=@Buff[d];
  RGBCol:=pcolor;

有解决方案吗?

1 个答案:

答案 0 :(得分:1)

P := @Buff[d];会将^AnsiChar指针分配给^pos2table指针,所以当然编译器会抱怨,因为它们是指向不同类型的指针,但前提是您拥有{{3} }启用,在这种情况下,您需要使用类型转换来解决它,例如:

type
  ppos2table = ^pos2table;
var
  P: ppos2table;
  Buff: array of ansichar;
  ...

P := ppos2table(@Buff[d]);

RGBCol:=pcolor;试图将TColor(整数类型,而不是指针类型)分配给TRGBColor(可能是记录类型)。它们之间没有标准的隐式转换,因此编译器对此有所抱怨。您也可以使用指针类型转换来解决此问题:

type
  PRGBColor = ^TRGBColor;
var
  ...
  RGBCol: TRGBColor;
  PColor: TColor;
  ...

RGBCol := PRGBColor(@pcolor)^;