2012-06-04 190 views
1

我有一個非常有趣的行爲,如果我的if語句。開始時備忘錄爲空,嘗試刪除會觸發該消息。然後,如果我在備忘錄中寫東西並嘗試刪除,則會再次出現正確的消息。但是,最後刪除後(備忘錄現在是空的),如果我再次點擊刪除我得到的第二條消息,而不是第一個(沒有刪除。我搞砸,如果其他語句?這裏有什麼正確的方法?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; 
+2

對於所有的實際用途後,您可以在事實的if/then/else語句都將被編譯並正確執行數100%。如果它沒有達到你所期望的,那麼問題出現在你自己的代碼中,或者在你使用的庫中。 –

+0

我沒有得到這個例子:首先你清除備忘錄,然後savetofile? –

回答

3

節省您必須調用

advmemo1.RefreshMemo; 
4

沒有什麼錯,你表現的代碼,所以很明顯IsEmpty必須返回false在最後刪除,而不是返回true,這表明:1)不是萬能的實際被刪除像你想象的,或2)IsEmpty是越野車。

+0

什麼我可以用來使這項工作? – user763539

+1

找到爲什麼'IsEmpty'在你期待的時候沒有返回True。否則不要再使用'IsEmpty',找一些其他的東西。 –

+0

我試過了,如果advmemo1.Lines.Count <1然後仍然奇怪的結果... – user763539