关于 C语言中 LONG类型转DELPHI中Integer类型问题(100分)

  • 主题发起人 主题发起人 flfqzrj
  • 开始时间 开始时间
F

flfqzrj

Unregistered / Unconfirmed
GUEST, unregistred user!

C语言中#define MpegStatusCancelled ((long)0xC1060002L)
转成 DELPHI
const MpegStatusCancelled: Integer = $C1060002;
编译时会报错
Constant expression violates subrange bounds
因为Integer是有符号数
$C106002就大过边界了
 
好象没问题啊,本来就是一个负数啊,我这边编译了,没什么问题。
我想数值对于你来说没关系,正负数都无所谓吧?
 
const MpegStatusCancelled: longword = $C1060002;
 
做了啊,写了,而且赋值给其他变量了啊,没问题。
-1056571390
 
用LongInt吧, 因为在DELPHI它对应C++的Long,虽然现在的32位平台两者是没有区别。
const MpegStatusCancelled: LongInt= LongInt($C1060002);

之所以会有警告,可以是因为DELPHI以为你提供了一个正数吧,强制转换就好了。
 
不用强制转换也一样啊,我都调试了,直接就integer就行啊,没有警告。

散分散分。
 
JENHON你是用的哪个版本的DELPHI,我用的D7,会报警的。
Writer你的办法我今天也想到了,过一会儿回家试试看,按理应行的
 
我用的是delphi 6
你重新建立一个新的project看看?
 
我用D7,是有警告
 
如果只是单纯怕有警告,你直接写
const MpegStatusCancelled: Integer = -1056571390;
得了,应该是一致的。

不知道你做什么用的,如果非要准确表示,你要改成:
const MpegStatusCancelled: Int64 = $C1060002;

就是怕有些地方integer和int64是不一样的。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
738
import
I
后退
顶部