2009-09-22 34 views
2

我转换GraphicEx项目至2009年德尔福迁移到德尔福2009年 - 无效的类型转换错误

我有麻烦,在单位Scanf_c.pas转换下面的过程。这里的问题是:

With TscRec(FType) do begin 

F型是整数,TscRec定义:

TscRec = packed record // Has size of an integer 
     Case byte of 
     0: (Typ : byte; Size : char; Flags : word;); 
     1: (SizeType : word; iFlags : smallInt;); 
     end; 

看来,这个代码是在2007年德尔福工作正常,但我在2009年德尔福编译它有问题。编译器错误是“Invalid Typecase”。这个问题是由类型转换FType造成的,TSype是一个记录的TScRec。

有人在这里有与德尔福2009年相同的问题,并有一个解决方案。

THX

回答

12

“CHAR” 现在是一个2字节的数据类型。如果将声明更改为“ansichar”,会发生什么情况? (这相当于Delphi < = 2007中的“char”)。

+1

+1 - 它与AnsiChar一起工作 – 2009-09-22 08:21:51

+3

删除“疯狂猜测”,因为这实际上是答案。 :)使用Char的第一个分支将是5个字节长,这将不再是一个整数的大小(4) – 2009-09-22 08:32:19