熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:異常處理與程序調試(二)[3]

2013-11-23 17:50:54  來源: Delphi編程 

  口令檢查是用戶在PassWord中輸入口令並按下回車鍵後開始的實現代碼在PassWord的OnKeyPress事件處理過程中

  procedure TFormPassWordKeyPress(Sender: TObject; var Key: Char)

  const

  CurrentPassWord = Delphi;

  begin

  if Key = # then

  begin

  try

  if PassWordtext <> CurrentPassWord then

  raise EInvalidPassWordCreate;

  LabelVisible := True;

  InputEditVisible := True;

  InputEditSetFocus;

  PassWordVisible := False;

  LabelVisible := False;

  except

  on EInvalidPassWord do

  begin

  PassWordtext := ;

  raise;

  end;

  end;

  Key:=#;

  end;

  end;

  同樣在InputEdit的OnKryPress事件處理過程中實現了輸入數字的合法性檢查

  procedure TFormInputEditKeyPress(Sender: TObject; var Key: Char)

  var

  Res: Real;

  Code: Integer;

  begin

  if Key = # then

  begin

  try

  val(InputEdittextResCode)

  if Code <> then

  raise EInValidInputcreate(

  if (Res > ) or (Res < ) then

  raise EInValidInputcreate(

  MessageDlg(Correct Input mtInformation[mbOk]

  Key := #;

  except

  on E:EInValidInput do

  begin

  InputEdittext := ;

  MessageDlg(EMessage mtWarning[mbOk]

  end;

  end;

  end;

  end;

  由於異常響應後即被清除所以要顯示異常信息需要另外的手段在以上兩段程序中我們采用了兩種不同的方法在口令合法性檢查中利用異常重引發由系統進行缺省響應在輸入數字合法性檢查中通過異常實例來獲取異常信息並由自己來顯示它

  以上所舉的是一個非常簡單的例子但從中已可以發現使用自定義異常編程為程序設計帶來了很大的靈活性

   利用異常響應編程

  利用異常處理機制不僅能使程序更加健壯而且也提供了一種使程序更加簡捷明了的途徑事實上使用自定義異常類就是一種利用異常響應編程的方式這裡我們再討論幾個利用標准異常類編程的例子

  比如為了防止零作除數可以在進行除法運算前使用if…then…else語句但如果有一系列這樣的語句則繁瑣程度是令人難以忍受的這時候我們可能傾向於使用EDivByZero異常例如如下一段程序就遠比用if…then…else實現簡捷明了

  function Calcu(xyzabc:Integer)Real;

  begin

  try

  Result := x/a+y/b+z/c ;

  except

  on EDivByZero do

  Result := ;

  end;

  end;

  在()記錄文件的打開與創建中就是利用異常響應來實現文件的打開或創建

  procedure TRecFileFormOpenButtonClick(Sender: TObject)

  begin

  if OpenDialogExecute then

  FileName := OpenDialogFileName

  else

  exit;

  AssignFile(MethodFileFilename)

  try

  Reset(MethodFile)

  FileOpened := True;

  except

  on EInOutError do

  begin

  try

  if FileExists(FileName) = False then

  begin

  ReWrite(MethodFile)

  FileOpened := True;

  end

  else

  begin

  FileOpened := False;

  MessageDlg(文件不能打開mtWarning[mbOK]

  end;

  except

  on EInOutError do

  begin

  FileOpened := False;

  MessageDlg(文件不能創建mtWarning[mbOK]

  end;

  end;

  end;

  end;

  if FileOpened = False then exit;

  Count := FileSize(MethodFile)

  if Count > then

  ChangeGrid;

  RecFileFormCaption := FormCaption+ +FileName;

  NewButtonEnabled := False;

  OpenButtonEnabled := False;

  CloseButtonEnabled := True;

  end;

  總之利用異常響應編程的中心思想是雖然存在預防異常發生的確定方法但卻對異常的產生並不進行事前預防而是進行事後處理並以此來簡化程序的邏輯結構

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25190.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.