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

Delphi 不同指针类型的不兼容类型,delphi,delphi-10.2-tokyo,quickreports,Delphi,Delphi 10.2 Tokyo,Quickreports,我正在Delphi10.2中使用QuickReport6。当我将quickreport源路径添加到库路径时,我在qrpdfilt.pas上遇到了不兼容的类型错误 Var P: ^ pos2table; Buff: array of ansichar; d: dword; RGBCol:TRGBColor; PColor: TColor; Pos2table is of type packed array Incompatible types issue comes

我正在Delphi10.2中使用QuickReport6。当我将quickreport源路径添加到库路径时,我在qrpdfilt.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;

有什么解决办法吗?

p:=@Buff[d]
^AnsiChar
指针分配给
^pos2table
指针,因此编译器当然会抱怨,因为它们是指向不同类型的指针,但只有在您已启用的情况下,在这种情况下,您需要使用类型转换来解决它,例如:

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)^;

我们不知道这些类型是什么。不过,我想你可以自己穿上它。我会帮你的。首先,阅读该错误消息的文档。Websearch会带你去的。查找所涉及类型的定义。然后错误会变得清晰。这将隐藏错误消息,但我怀疑代码是否有效:)谢谢您的回复@Remy Lebeau。错误信息消失了。我需要测试代码的功能。