我正在安装一个旧的组件包TSCap32,并使用Invalid typecast
命令在多个位置获取错误Move
。
var
pCopiedDib: PChar;
...
Move(pOrigDibBmi^, TByteArray(pCopiedDib^)[0], BmiSize);
单位本身宣告TByteArray如下:
type
TByteArray = array[0..0] of Byte;
如何解决此错误?
答案 0 :(得分:2)
您使用的演员表要求TByteArray
和pCopiedDib^
类型具有相同的尺寸。它们不是:TByteArray
的大小为1,而pCopiedDib^
的大小为2.因此编译器拒绝您的代码,因为它无效。
该代码可能最初是为Unicode前Delphi编写的,其中PChar
是PAnsiChar
的别名。在那种情况下,代码编译。现在,您使用Unicode Delphi,PChar
是PWideChar
的别名,因此类型具有不同的大小。
究竟如何修复代码尚不清楚。如果您将pCopiedDib
定义为PAnsiChar
,那么您的代码将会编译,但无论它是否有效都是另一回事。我建议你进一步研究这段代码,因为你知道错误的原因。