发现DELPHI的一个大BUG :((0分)

  • 主题发起人 主题发起人 苦虫
  • 开始时间 开始时间
to cslotus: 不妨贴出代码。
 
算法已经写了,myrandomproc就不用写了吧,只不过是生成一个随机数字符串而己
- - - - - - - - - -
Happy new year:)
 
to cslotus:
注意randomize不应放在循环体内。randomize应放在for循环外,仅用一次,或者间隔一段
时间用一次。原因是Randomize以当前的时间为随机种子,生成一个随即数。如果放在循环体
内,则时间是一样的(循环间隔极短,可以忽略),即随机种子是一样的,所以生成的伪随机数一样。
 
To lynu
String 不允许访问 S[0] 的,这样的肯定会出非法操作的

有的时候Delphi看着乱跳,原因:
1、出现非法操作,Delphi会调到最近的Finally,Except,或者end。
2、Exit,Delphi会直接跳到最近的Finally,Except,或者end。
3、Compile优化了,会跳过Compile优化了的语句。

再有,不要在for之后引用循环计数值,那个值是不确定的
for I := 1 to 5 do
begin
end;
ShowMessage(IntToStr(I))
I不一定是5
 
我想aizb是对的,以前我们遇到过很多类似的问题最终证明是自己程序的问题。
至于为什么去掉优化就“正常”了呢,因为代码尺寸变了,数据在内存中的位置变了,
遭到错误代码破坏的内容也变了,可能暂时没有暴露出来,也可能成为永久的隐患。
还是查查其它代码吧。
 
这种情况的问题是很难找的,这就需要有足够经验.
 
我没遇到过,
看了后我要小心

不过我还是相信Delphi
 
问题解决,谢谢各位
 
后退
顶部