1

if else ステートメントの非常に面白い動作があります。最初はメモは空で、削除しようとするとメッセージがトリガーされます。その後、メモに何か書いて削除しようとすると、再び正しいメッセージが表示されます。しかし、最後に削除した後 (メモは空になりました) もう一度クリックして削除すると、最初のメッセージではなく 2 番目のメッセージが表示されます (削除するものはありません。 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;
4

2 に答える 2

4

あなたが示したコードには何も問題がないので、IsEmptyTrue を返すのではなく、最後の削除の後に False を返す必要があることは明らかです。これは、1) あなたが思ったようにすべてが実際に削除されたわけではないか、2)IsEmptyバグがあることを示唆しています。

于 2012-06-04T23:23:47.363 に答える
3

保存した後、呼び出す必要があります

advmemo1.RefreshMemo;
于 2012-06-05T00:31:30.887 に答える