【问题标题】:if else statement not executing rightif else 语句没有正确执行
【发布时间】:2012-06-08 23:58:24
【问题描述】:

我的 if else 语句有一个非常有趣的行为。开始时,备忘录是空的,尝试删除会触发消息。然后,如果我在备忘录中写了一些东西并尝试删除,则会再次出现正确的消息。但是,在最后一次删除之后(备忘录现在是空的),如果我再次单击删除,我会收到第二条消息而不是第一条消息(没有什么可删除的。我是否在搞乱 if else 语句??这里的正确方法是什么?

procedure TForm1.AdvGlowButton2Click(Sender: TObject);
begin
   if advmemo1.IsEmpty then
      ShowMessage('Nothing to delete !')
   else  
   begin
     if MessageDlg('Delete everything?',
                     mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
       advmemo1.Lines.Clear;
       advmemo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+ '\memo.txt');
     end;
   end;
end;

【问题讨论】:

  • 出于所有实际目的,您可以 100% 相信 if/then/else 语句都将被正确编译和执行。如果它没有达到您的预期,那么问题出在您自己的代码中,或者在您使用的库中。
  • 我完全看不懂这个例子:先清除备忘录,然后保存到文件?

标签: delphi delphi-7 delphi-xe2 delphi-xe


【解决方案1】:

保存后必须调用

advmemo1.RefreshMemo;

【讨论】:

    【解决方案2】:

    您显示的代码没有任何问题,因此显然IsEmpty 在最后一次删除后必须返回 False 而不是返回 True,这表明要么 1) 并非所有内容都像您想象的那样被实际删除,或者 2) @ 987654322@ 有问题。

    【讨论】:

    • 找出为什么 IsEmpty 没有在您期望的时候返回 True。否则不要再使用IsEmpty了,找点别的吧。
    • 什么样的“奇怪结果”?
    • 如果我只做第一部分 if advmemo1.IsEmpty 然后 ShowMessage('Nothing to delete !') 它工作正常。我可以写删除和备忘录检测它是否为空。这个备忘录似乎需要回车到第一行来检测空备忘录。奇怪
    • 我想我发现了问题所在......保存后你必须调用 advmemo1.RefreshMemo;然后就可以了...谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2021-11-29
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多