2012-06-04 3 views
1

if if else 문의 매우 재미있는 동작이 있습니다. 시작시 메모가 비어 있고 삭제 시도가 메시지를 트리거합니다. 그런 다음 메모에 내용을 쓰고 삭제하려고하면 올바른 메시지가 다시 나타납니다. 그러나 마지막으로 삭제 한 후 (메모가 비어 있음) 다시 한 번 클릭하여 삭제하면 두 번째 메시지가 표시되고 첫 번째 메시지는 삭제되지 않습니다. 여기에 올바른 방법이 무엇입니까?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

를 호출해야합니다 저장 한 후, 당신은/다음/다른 문이 모두 컴파일 될 경우 제대로 실행한다는 사실에 100 %를 셀 수 있습니다. 예상 한대로 작동하지 않으면 문제점은 사용자 코드 또는 사용중인 라이브러리에 있습니다. –

+0

나는이 예제를 전혀 얻지 못한다. 우선 메모를 지운 다음, savetofile을 지운다. –

답변

3

모든 실제적인 목적을 위해

advmemo1.RefreshMemo; 
4

이 당신이 보여 코드 아무 문제가 없기 때문에 마지막 중 당신이 생각처럼 1) 모든 것이 실제로 삭제, 또는 2) IsEmpty 제안하는 대신 진정한 반환하는 삭제 한 후 분명히 IsEmpty은 false를 반환해야합니다 버그입니다.

+0

이 작업을 수행하는 데 사용할 수있는 다른 방법이 있습니까? – user763539

+1

IsEmpty가 예상 할 때 True를 반환하지 않는 이유를 찾아보십시오. 그렇지 않으면'IsEmpty'를 더 이상 사용하지 말고 다른 것을 찾으십시오. –

+0

advmemo1.Lines.Count <1을 시도했지만 여전히 이상한 결과가 나온 경우 ... – user763539

관련 문제