莫非在D7中强制类型转换PChar()不安全吗? (在线,150分) (60分)

  • 主题发起人 主题发起人 chemer
  • 开始时间 开始时间
C

chemer

Unregistered / Unconfirmed
GUEST, unregistred user!
我的project由D5转到D7后,原有的Pchar()在编译时会出错,
显示:Unsafe type "pchar",这是为什么?
在D5中明明没有问题的,主要在ShellExecute这类中,要是将Pchar('test')改为
'test'不就不对了?谢谢!
 
WIN32 API函数字符串都应用NULL式的字符串类型,PASCAL式的字符串类型都应用PCHAR(S)转化
 
怎么修改?虽然可以正常编译,但最好还是修正的好。
pchar()到底那里错了?
 
看来d7里类型检查更严格了。 估计d7认为你用到pchar进行类型转换的话是可能修改这个pchar指向的内容的。 因为PChar(常量)会得到代码段中的地址, 而这是不可修改的。 因此给了你一个警告。
改的方法正是你认为不能这么改的: 将pchar('test')改成'test'
 
可以在Project选项中屏蔽掉
 
但是这么改就更不对了,根本无法编译通过。请问Shuzi:哪个选项能改?
 
可能eYes说的对
 
to chemer:
project options->compiler messages
 
这岂不成自欺欺人了?
我就是按照eYes改的,无法编译通过。
 
要不成自欺欺人,你得用StrPCopy之类的函数进行转换
 
莫非在D7中强制类型转换PChar()不安全吗?我看了一下帮助,好像是和.Net有关。
若是简单的字符串则可以直接用''赋值,但我的字符串是由ExtractFilePath()和
'help.chm'组合成的。
我用:shellexecute(handle, 'open', 'hh.exe', ExtractFilePath(Application.ExeName)+'eehelp.chm', nil, sw_show);
不行,然后改成:
shellexecute(handle, 'open', 'hh.exe', PChar(ExtractFilePath(Application.ExeName)+'eehelp.chm'), nil, sw_show);
编译成功了,但显示PChar()不安全。
我又用:shellexecute(handle, 'open', 'hh.exe', 'eehelp.chm', nil, sw_show);
成功!但这又容易造成找不到文件的错误!

总之,为什么在D7中强制类型转换PChar()不安全?怎么解决此问题呢?谢谢各位!
 
如果不关掉Safe message的选项就有n多的东东跑出来。我看了都怕。^_^
 
谢谢!Safe message在哪里?
这类安全类错误和流行的Win平台关系大不大?
 
Faint!!
在D7中连GetMem都不安全了!是不是我有什么选项没设置对呀?
 
PChar()是不安全了。
 
"PChar()是不安全了。"此话怎讲?
 
后退
顶部