首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級(jí) | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷員 | 國(guó)際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國(guó)際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

2011年計(jì)算機(jī)等級(jí)考試Delphi講義:文件管理

本章首先介紹Delphi文件管理的基本概念和標(biāo)準(zhǔn)過程/函數(shù),并提供了一個(gè)記錄文件的應(yīng)用實(shí)例,這是從我們實(shí)際課題開發(fā)中提取出來的。而后介紹Delphi提供的文件控件的使用方法。最后提供的一個(gè)綜合例程MDI文件管理器則是對(duì)Delphi文件管理功能的綜合應(yīng)用。

  6.2 記錄文件的應(yīng)用

  6.2.1 任務(wù)介紹

  在這一節(jié),我們開發(fā)一個(gè)系統(tǒng)安全性綜合評(píng)估方法管理系統(tǒng)。系統(tǒng)安全性在復(fù)雜項(xiàng)目開發(fā)中十分重要,但由于牽涉面廣因而很難獲得客觀、全面的評(píng)估值。鑒于此我們提出多角度、多側(cè)面評(píng)估而后定量集成的思路,并在此基礎(chǔ)上提出了多種安全性綜合評(píng)估方法。每種方法由不同部門進(jìn)行評(píng)估而后把結(jié)果匯總、綜合。

  為此我們定義如下的記錄類型:

  type

  TNature = (Micro,Macro);

  {方法性質(zhì),分為微觀和宏觀兩類}

  TMethod = Record

  Name: string[20]; {方法名}

  Condition: string[40]; {方法適用條件}

  Nature: TNature; {方法性質(zhì)}

  Result: Real; {方法評(píng)估值}

  end;

  用來記錄不同方法的信息。

  由于不同方法的條件、性質(zhì)不同,因而對(duì)工程開發(fā)的不同階段適用方法集也不同。因此需要根據(jù)實(shí)際情況對(duì)方法集進(jìn)行管理。我們把每一方法作為一條記錄,每一方法集作為一個(gè)記錄文件。下面討論系統(tǒng)的實(shí)現(xiàn)方法。

  6.2.2 設(shè)計(jì)基本思路

  本系統(tǒng)要實(shí)現(xiàn)的基本功能是文件的打開、創(chuàng)建、關(guān)閉、顯示,記錄的增加、修改、刪除以及結(jié)果的綜合和顯示。為此我們使用了兩組按鈕分別用于文件和記錄的操作, 使用一個(gè)StringGrid控件來顯示文件內(nèi)容,使用一個(gè)只讀編輯框顯示結(jié)果的綜合。

  其中各部件的名稱、功能如下表所示:

  表6.1 主窗口部件的設(shè)計(jì)

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  部件名稱 主要屬性 備注

  ──────────────────────────────────────

  RecFileForm BorderStyle=bsDialog 文件打開后把文件名附到窗口標(biāo)題后

  Position=poScreenCenter

  StringGrid1 大小行數(shù)動(dòng)態(tài)確定

  HazAttr(編輯框) ReadOnly=True 顯示綜合結(jié)果

  OpenButton TabOrder=0 打開一個(gè)記錄文件,若文件不存在則創(chuàng)建

  NewButton Caption='打開' 創(chuàng)建一個(gè)記錄文件,若文件存在則打開

  CloseButton Caption='關(guān)閉' 關(guān)閉一個(gè)已打開的文件

  AddButton Caption='增加' 增加一條記錄

  ModifyButton Caption='修改' 修改一條記錄

  DeleteButton Caption='刪除' 刪除一條記錄

  CalcuButton Caption='計(jì)算' 計(jì)算最終結(jié)果并顯示

  ExitButton Caption='退出' 系統(tǒng)終止。若當(dāng)前有打開的文件則先關(guān)閉

  OpenDialog1 Filter= 選擇或輸入欲打開的文件

  'Record File(*.Rec)|.Rec

  |Any File(*.*)|*.*'

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  另外,StringGrid1、HazAttr的標(biāo)題用兩個(gè)標(biāo)簽框(Label)來顯示。

  另外我們還需要一個(gè)編輯對(duì)話框。其中四個(gè)編輯框Name、Condition、Nature、 Result分別對(duì)應(yīng)TMethod記錄的四個(gè)域。

  為協(xié)調(diào)程序運(yùn)行,我們定義了一組全局變量。各變量的類型、作用如下表。

  表6.2 全局變量及其作用

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  變量名 類型 作用

  ─────────────────────────────────

  MethodFile MethodFileType 與當(dāng)前打開文件相關(guān)聯(lián)的文件變量

  FileName string[70] 當(dāng)前打開文件的文件名

  Count Count 當(dāng)前打開文件的記錄總數(shù)

  CurrentRec Integer 當(dāng)前處理記錄號(hào)

  FileOpened Boolean 當(dāng)前是否有文件打開

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  記錄文件類型MethodFileType的定義為

  type

  MethodFileType = file of TMethod;

  布爾變量FileOpened用于控制文件按鈕的使能、變灰,記錄按鈕的反應(yīng)以及系統(tǒng)結(jié)束時(shí)是否需要首先關(guān)閉文件。

  6.2.3 記錄文件的打開和創(chuàng)建

  記錄文件的打開和創(chuàng)建同文本文件一樣也需要關(guān)聯(lián)和初始化兩個(gè)步驟。同文本文件唯一的不同是不能使用Append過程。

  記錄文件缺省情況下以讀寫方式打開,如果想以只讀或只寫方式打開,則需要修改System單元中定義的變量FileMode的值。

  FileMode的取值和意義如下表。

  表6.3 FileMode的取值和意義

  ━━━━━━━━━━━━━━

  取值 意義

  ──────────────

  0 只讀

  1 只寫

  2 讀寫

  ━━━━━━━━━━━━━━

  FileMode是一個(gè)全局變量,對(duì)它的每次修改都將影響所有Reset的操作,因此在打開自己的文件后應(yīng)還原它的值。

  在本系統(tǒng)中,當(dāng)用戶按下“打開”按鈕時(shí),首先彈出一個(gè)標(biāo)準(zhǔn)文件打開對(duì)話框,要求用戶輸入或選擇文件名。確認(rèn)后如果該文件名的文件存在,則用Reset打開,若不存在則創(chuàng)建。程序清單如下。

  procedure TRecFileForm.OpenButtonClick(Sender: TObject);

  begin

  if OpenDialog1.Execute then

  FileName := OpenDialog1.FileName

  else

  exit;

  AssignFile(MethodFile,Filename);

  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],0);

  end;

  except

  On EInOutError do

  begin

  FileOpened := False;

  MessageDlg('文件不能創(chuàng)建',mtWarning,[mbOK],0);

  end;

  end;

  end;

  end;

  if FileOpened = False then exit;

  Count := FileSize(MethodFile);

  if Count>0 then

  ChangeGrid;

  RecFileForm.Caption := FormCaption+' -- '+FileName;

  NewButton.Enabled := False;

  OpenButton.Enabled := False;

  CloseButton.Enabled := True;

  end;

  首先系統(tǒng)試圖用Reset打開一個(gè)文件,并置FileOpened為True。如果文件不能打開,則引發(fā)一個(gè)I/O異常。在異常處理過程中,首先檢測(cè)文件是否存在。若不存在則創(chuàng)建這個(gè)文件。否則是其它原因引發(fā)的異常,則把FileOpend重置為False, 并顯示信息“文件不能打開”。在文件創(chuàng)建過程中仍可能引發(fā)異常,因而在一個(gè)嵌套的異常處理中把FileOpened重置為False,并提示信息“文件不能創(chuàng)建”。

  有關(guān)異常處理的內(nèi)容請(qǐng)讀者參看第十二章。這段程序說明:異常處理機(jī)制不僅能使我們的程序更健壯,而且為編程提供了靈活性。

  當(dāng)用戶按下“創(chuàng)建”按鈕時(shí),系統(tǒng)首先彈出一個(gè)標(biāo)準(zhǔn)輸入框,要求用戶輸入文件名,確認(rèn)后系統(tǒng)首先檢測(cè)文件是否存在。若存在則直接打開,否則創(chuàng)建一個(gè)新文件。打開或創(chuàng)建過程導(dǎo)致異常,則重置FileName和FileOpened兩個(gè)全局變量。

  procedure TRecFileForm.NewButtonClick(Sender: TObject);

  begin

  FileName := InputBox('輸入框','請(qǐng)輸入文件名','');

  if FileName = '' then Exit;

  try

  AssignFile(MethodFile,FileName);

  if FileExists(FileName) then

  begin

  Reset(MethodFile);

  Count := FileSize(MethodFile);

  if Count>0 then

  ChangeGrid;

  end

  else

  begin

  Rewrite(MethodFile);

  count := 0;

  end;

  FileOpened := true;

  Except

  on EInOutError do

  begin

  FileName := '';

  FileOpened := False;

  end;

  end;

  if FileOpened then

  begin

  NewButton.Enabled := False;

  OpenButton.Enabled := False;

  CloseButton.Enabled := True;

  RecFileForm.Caption := FormCaption+' -- '+FileName;

  end;

  end;

上一頁  1 2 3 4 5 6 7 8 9 下一頁
  相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題
       預(yù)告:名師解析2010年9月計(jì)算機(jī)等級(jí)考試試題答案
       2010年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢時(shí)間及入口
       2010年9月計(jì)算機(jī)等考成績(jī)查詢短信免費(fèi)提醒開通
文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。