-2

我在 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;

有什么解决办法吗?

4

1 回答 1

1

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)^;
于 2018-08-04T04:47:27.303 回答