这个问题多半是由于if else 匹配错了造成的,比如
if xxx then
    if yyy then
        do This
else
    do That;这个else对应的是if yyy的,建议对每段都加上begin end。

解决方案 »

  1.   

    恭喜你解决问题。
    你比有些人好多了,出了问题自己找程序的原因,而不是在这里大骂Delphi一通。呵呵恭喜发财,分数拿来
      

  2.   

    我怀疑过Delphi无数次,至今只有一次是对的。你还是好好查查自己靠得住。
      

  3.   

    To GoodHope(好望角):
    谢谢提醒,不过虽然我是菜鸟,可我还没有那么白痴!我确实是每段都加上begin end的!!
      

  4.   

    还有一种可能,用了with,调试器里看到的值是不带with的,看不到带with效果的。
      

  5.   

    To boilpoint(常用对数):
    呵呵,我当然不敢指望了!!不过我还想知道为什么。不知有没有高手能告诉我。
      

  6.   

    晕倒。逻辑错误都能指出来,delphi可以自己开发五子棋了,还用你在那里晕乎么?
      

  7.   

    呵呵,我根本没用WITH,那只是简单的判断一个简单变量的值而已。而且推理也告诉我,调试器的结果是对的。
      

  8.   

    我原来是用VC++的,但现在在用Delphi,就发现一个Source文件写下来了,但满眼看去,到处都是"begin" "end",感觉真是祖国江山一片,开始很不习惯,加这些东东实在不得已,怕if else 出错啊。你所说的情况实在是太神气了。I 服了 You!
      

  9.   

    恭喜!!!
    不过,有谁碰到过如下问题:
    var i:integer;
    begin
    for i:=0 to 5 do//问题在这里,运行或跟踪调试时发现i从5降到0。
     ...
    end;
      

  10.   

    to clacklin(海风) :kao ,bu hui ba ,na ke bu shi "downto" o ~
      

  11.   

    没有用with也可能会有作用域的问题。
    to clacklin
    这不是Bug,这是Delphi对代码的优化造成的,为了提高运算效率。如果你学过汇编就知道为什么了。同时,这绝对不会引起运算错误。
      

  12.   

    to clacklin:
    对对对,我那五子棋也遇到了!!!!
    for i:=1 to 4 do,从4降到1 !!!开始我没在意,因为顺序无所谓。可我改过那个错误之后发现,这个居然正常了!!!!!!!!!!!!!!!刚才我忘了说,呵呵!!
      

  13.   

    不会这么离谱吧????5降到0?????如果真这样,俺把delphi给一脚踢了
      

  14.   

    To GoodHope(好望角):不可能是作用域的问题,那只是一个局部变量,没有全局变量与之同名,且我也没用别人的模块,我的程序也只有一个模块(UNIT),我的函数是直接作为TFORM1的成员。
      

  15.   

    不会是downto ,因为这样根本不对i赋值,这种情况还是一般发生???我怎么没遇到过??
      

  16.   

    To autoboy(自动变菜):重启我也试过了。
    而且设过变量后没有用会有HINT,我的程序HINT,WORNING,ERROR都是0个。
      

  17.   

    如果是downto我就不会奇怪了。而且在同一程序在象这样的循环有不少,别的地方就不会。
    to natrium11(我是一只小小小小鸟),能否介绍您的经验?
      

  18.   

    to GoodHope(好望角),我该循环是用于解码用的,每6个字节为一个信息字,象这样给它倒过来了,所有的编码和解码就全乱了。您说它会没影响吗?
      

  19.   

    to natrium11(我是一只小小小小鸟),能否介绍一下您的那个“错误”?
      

  20.   

    不要怀疑,一定是你的程序的条件有问题,我就说这么多.你应该相信,是你错了,而不是Delphi,我的程序出现问题的时候,我都是这么想的.
      

  21.   

    To clacklin(海风) 我也出现过for i:=1 to 4 do,从4降到1 !!!这种情况,当时我没在意,因为程序运行一切正常。关注
      

  22.   

    To clacklin(海风) & natrium11(我是一只小小小小鸟) :
    我也出现过for i:=1 to 4 do,从4降到1 !!!这种情况。
    巴我弄得头都大了好几圈。后来你们是怎么解决的啊??
      

  23.   

    后来我的解决办法嘛,就是不用它,而连续写六行代码。:)
    如:
    i:=0;
    ....
    inc(i);
    ...
      

  24.   

    to: natrium11
    我从Delphi1到Delphi5,只碰到过VCL的Bug,从未遇到Delphi编译器出错。建议好好检查自己的代码。to: clacklin
    虽然i的值是到过来,但是引用i的时候,Delphi会自动调整过来,就像tangliang说的那样,不会有问题。不信你看CPU窗口中的代码。有一种情况是例外,在内嵌汇编中引用i。
      

  25.   

    我在用bc3.1时有相似情况,当时是编译完成后发现有一句语句没有执行,当时特别奇怪,查了很久汇编码,发现有一条语句就是没有编译,最后还是不得已换方法了
    Delphi编译器出错还从没遇到
      

  26.   

    To clacklin:
    我那就是一个键入错误啊。

    if a=4 then
    ...我不小心,把4敲成5了。强调:这是另一个if,与我说的那一个没有任何联系。
      

  27.   

    To snjun(delphiyang):What do you mean,please?
      

  28.   

    关于 For 循环的问题,delphi的编译器判断如果循环顺序与逻辑无关,就会优化成 4 downto 1之类的,没有关系的。
      

  29.   

    同意GoodHope(好望角)
    碰到过VCL的Bug,从未遇到Delphi编译器出错。 
      

  30.   

    有一回用Delphi一不小心往内存写了一个大字符串,结果从此Delphi的控制顺序就乱了,最后重装才解决。
    除此之外的编译器错误没遇到过
      

  31.   

    有时候Delphi4突然不让我设置断点,编辑器右部标志每行源代码可执行的小点也没有了,
    这是我的问题吗?如果是,该怎样解决呢?
      

  32.   

    这是你是程序不会执行到这里吧,这是废代码。
    to Nicrosoft(奈软),我是循环是与逻辑有关的,对我程序的影响很大。
      

  33.   

    我把这个贴子从头到尾看了一遍,就我个人的意见,总结一下:
    如果出现问题,相信delphi,你的代码有问题,这样可以比较快的发现错误。
      

  34.   

    我当然是相信delphi,在这里是想与大家讨论为什么会出现这种情况的。
      

  35.   

    同意clacklin(海风):我就是想知道为什么才开这个帖子的嘛!!!
    大家都不知道吗????