Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi if-else语句执行不正确_Delphi_Delphi 7_Delphi Xe2_Delphi Xe - Fatal编程技术网

Delphi if-else语句执行不正确

Delphi if-else语句执行不正确,delphi,delphi-7,delphi-xe2,delphi-xe,Delphi,Delphi 7,Delphi Xe2,Delphi Xe,我的if-else语句有一个非常有趣的行为。开始时,备忘录为空,尝试删除会触发消息。然后,如果我在备忘录中写下一些东西并尝试删除,就会再次出现正确的消息。但是,在最后一次删除后(备忘录现在为空),如果我再次单击删除,我会得到第二条消息,而不是第一条消息(没有要删除的内容。我是否弄乱了if-else语句??这里的正确方法是什么 procedure TForm1.AdvGlowButton2Click(Sender: TObject); begin if advmemo1.IsEmpty th

我的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;

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

您显示的代码没有问题,所以很明显,
IsEmpty
在上次删除后必须返回False,而不是返回True,这表明1)并非所有内容都像您所想的那样被删除,或者2)
IsEmpty
有问题。

保存后必须调用

advmemo1.RefreshMemo;

保存后,你必须打电话

advmemo1.RefreshMemo;

找出
IsEmpty
在您希望返回True时未返回True的原因。或者不要再使用
IsEmpty
了,找些别的东西。什么样的“奇怪结果”?如果我只做第一部分,如果advmome1.IsEmpty,那么ShowMessage('Nothing to delete!')就可以了。我可以写delete,memo会检测它是否为空。这个备忘录似乎需要返回到第一行才能检测到空备忘录。WeirdI想我发现了问题所在。。。保存后,必须调用advmemo1.RefreshMemo;那就行了…谢谢你!找出
IsEmpty
在您希望返回True时未返回True的原因。或者不要再使用
IsEmpty
了,找些别的东西。什么样的“奇怪结果”?如果我只做第一部分,如果advmome1.IsEmpty,那么ShowMessage('Nothing to delete!')就可以了。我可以写delete,memo会检测它是否为空。这个备忘录似乎需要返回到第一行才能检测到空备忘录。WeirdI想我发现了问题所在。。。保存后,必须调用advmemo1.RefreshMemo;那就行了…谢谢你!出于所有实际目的,if/then/else语句都将被正确编译和执行,这一事实可以让您100%放心。如果它没有达到您预期的效果,那么问题就出在您自己的代码中,或者您正在使用的库中。我根本不明白这个例子:首先您清除了备忘录,然后您保存了文件?对于所有实际用途,您可以100%地相信If/then/else语句都将被正确编译和执行。如果它没有达到您期望的效果,那么问题就出在您自己的代码中,或者您正在使用的库中。我根本不理解这个示例:首先您清除备忘录,然后您保存文件?