黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 考試吧論壇 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ì)工作者 | 外銷員 | 國際商務(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ī)劃師 | 國際內(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)用。

  這里所顯示的刪除操作簡(jiǎn)單明了。但在程序開始設(shè)計(jì)時(shí)我卻走了一條彎路,后來發(fā)現(xiàn)雖然這種方法用于記錄的刪除操作顯得笨拙、可笑,但卻恰恰是記錄插入、排序的思想。

  這種思想的核心是創(chuàng)建一個(gè)新文件保存更新后的內(nèi)容。若新文件順利創(chuàng)建,則刪除原文件,否則恢復(fù)原來的文件。程序清單如下:

  procedure TRecFileForm.DeleteButtonClick(Sender: TObject);

  var

  NewFile: MethodFileType;

  MethodRec: TMethod;

  NewFileName: String;

  i: Integer;

  begin

  if FileOpened = False then Exit;

  CurrentRec := StringGrid1.Row-1;

  if CurrentRec < 0 then Exit;

  if MessageDlg('Delete Current Record ?', mtConfirmation,

  [mbYes, mbNo], 0) = idYes then

  begin

  HazAttr.text := '';

  NewFileName := ChangeFileExt(FileName,'.sav');

  try

  AssignFile(NewFile,FileName);

  ReWrite(NewFile);

  Except

  On EInOutError do

  begin

  Rename(MethodFile,FileName);

  Exit;

  end;

  end;

  for i := 1 to Count do

  if I <> CurrentRec+1 then

  begin

  MethodRec := GridToRec(i);

  Write(NewFile,MethodRec);

  end;

  closeFile(MethodFile);

  try

  AssignFile(MethodFile,Filename);

  Reset(MethodFile);

  except

  on EInOutError do

  begin

  DeleteFile(FileName);

  AssignFile(MethodFile,NewFileName);

  Reset(MethodFile);

  Rename(MethodFile,FileName);

  Exit;

  end;

  DeleteFile(NewFileName);

  Count:=Count-1;

  ChangeGrid;

  end;

  end;

  對(duì)于記錄插入,方法基本同上。對(duì)于排序,可先將關(guān)鍵域讀入排序,而后再按排序結(jié)果對(duì)應(yīng)的記錄號(hào)順序重寫文件。

  6.2.8 結(jié)果綜合

  對(duì)不同方法的評(píng)估結(jié)果,可按一定的公式進(jìn)行綜合。當(dāng)用戶按下“計(jì)算”按鈕時(shí),系統(tǒng)進(jìn)行計(jì)算并把綜合結(jié)果寫入HazAttr只讀編輯框中。

  為保證結(jié)果顯示的正確性,每次增加、修改、刪除操作確認(rèn)后HazAttr編輯框清空。

  6.2.9 編輯對(duì)話框的輸入檢查

  當(dāng)用戶單擊“增加”或“修改”按鈕時(shí)系統(tǒng)將彈出一個(gè)編輯對(duì)話框,讓用戶輸入或修改記錄內(nèi)容。其中的三個(gè)編輯框,一個(gè)組合列表框分別對(duì)應(yīng)TMethod 的四個(gè)域。由于TMethod的Result域必須是[0,1]間的小數(shù),因此當(dāng)用戶按OK鍵關(guān)閉對(duì)話框時(shí)應(yīng)進(jìn)行類型和范圍檢查。

  在VB中我做過同樣的工作,那時(shí)需要對(duì)用戶輸入的鍵碼逐個(gè)進(jìn)行判斷。但這種方法很繁瑣、很難做圓滿(如不能很好地支持編輯鍵)。而Object Pascal提供了更好的方法。這種方法的關(guān)鍵就在于它的類型轉(zhuǎn)換函數(shù)Val:

  procedure Val(Str: String;var V; var Code: Integer);

  V是由Str轉(zhuǎn)換成的整型或?qū)嵭蛿?shù)。若字符串非法,則出錯(cuò)位置返至Code;否則置Code為0。字符串非法并不會(huì)引發(fā)一個(gè)轉(zhuǎn)換異常。

  如果轉(zhuǎn)換后的數(shù)超出了我們的范圍,則顯式把Code置為-1。最后統(tǒng)一通過檢測(cè)Code是否為0來判斷輸入是否合法。

  我們把輸入檢查放在對(duì)話框的OnCloseQuery事件處理過程中。如輸入非法,則禁止對(duì)話框關(guān)閉,并將輸入焦點(diǎn)置于Result編輯框中。但假如用戶按了Cancel按鈕,則這種檢查是多余的。為此定義一個(gè)布爾變量IsCancel,對(duì)話框生成時(shí)置為False。假如用戶按下Cancel,則置為True,此時(shí)OnCloseQuery事件不進(jìn)行輸入檢查。

  對(duì)話框的OnCloseQuery事件處理過程的程序清單如下:

  procedure TEditForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

  var

  Res: Real;

  k: Integer;

  begin

  if IsCancel = False then

  begin

  val(Result.text,Res,k);

  if (Res > 1) or (Res < 0) then k := -1;

  if k <> 0 then

  begin

  MessageDlg('非法輸入 !',mtWarning,[mbOK],0);

  Result.text := '';

  CanClose := False;

  Result.SetFocus;

  end;

  end;

  end;

  6.2.10 文件和系統(tǒng)的關(guān)閉

  文件關(guān)閉須調(diào)用CloseFile過程:

  CloseFile(MethodFile);

  并對(duì)系統(tǒng)的狀態(tài)重新進(jìn)行設(shè)置。

  系統(tǒng)關(guān)閉時(shí)首先檢測(cè)當(dāng)前是否有打開的文件。若有則先關(guān)閉文件。這在主窗口的OnCloseQuery事件中實(shí)現(xiàn)。

  實(shí)現(xiàn)文件關(guān)閉的程序清單如下:

  procedure TRecFileForm.CloseButtonClick(Sender: TObject);

  begin

  if FileOpened then

  begin

  CloseFile(MethodFile);

  FileOpened := False;

  ClearGrid;

  OpenButton.Enabled := True;

  NewButton.Enabled := True;

  CloseButton.Enabled := False;

  RecFileForm.Caption := FormCaption;

  end;

  end;

  實(shí)現(xiàn)系統(tǒng)關(guān)閉前檢查的程序清單如下:

  procedure TRecFileForm.FormCloseQuery(Sender: TObject;

  var CanClose: Boolean);

  begin

  if FileOpened then

  closeFile(MethodFile);

  end;

  6.2.11 記錄文件小結(jié)

  我們所舉的例子雖然簡(jiǎn)單,但基本覆蓋了記錄文件操作的主要方面。這里關(guān)鍵問題在于靈活應(yīng)用Delphi提供的文件管理函數(shù)。同時(shí),為了保證程序的健壯性應(yīng)對(duì)異常進(jìn)行捕獲并處理。在數(shù)據(jù)庫應(yīng)用技術(shù)發(fā)展的今天,記錄文件的重要性也許有所下降,但對(duì)象我們這里所處理的簡(jiǎn)單問題它仍有用武之地。

  這里所舉的例子一次只能處理一個(gè)文件。但讀者可以很容易把它改為一個(gè)MDI程序。雖然對(duì)于這里的實(shí)際情況來說,似乎并無必要。

  6.3 文件控件的應(yīng)用

  Delphi文件管理的最大特色是提供了一組文件操作控件。利用這些控件我們可以快速開發(fā)一個(gè)文件名瀏覽系統(tǒng)。其功能強(qiáng)大與其所需書寫代碼之少所形成的強(qiáng)烈反差,正是Dephi生命力的體現(xiàn)。

  6.3.1 文件控件及其相互關(guān)系

  Delphi提供的專用文件控件如下表所示。

  表6.4 Delphi專用文件控件

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

  控件名 功能

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

  DriveComboBox 驅(qū)動(dòng)器組合列表框。用于選擇當(dāng)前驅(qū)動(dòng)器

  FileListBox 文件列表框。用于顯示當(dāng)前目錄中的文件和選中當(dāng)前文件

  FilterComboBox 文件類型組合列表框。用于選擇顯示文件的類型

  DirectoryOutline 目錄樹(6.4節(jié)專門介紹)

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

  以上控件前四個(gè)在Component Palette(部件選擇板)的System頁中,DirectoryOutline在Component Palette的Samples頁中。

  以上文件控件再加上文件編輯框、目錄標(biāo)簽框(事實(shí)上是一般的編輯框、標(biāo)簽框)就可以構(gòu)成一個(gè)完整的文件操作系統(tǒng)。它們之間的聯(lián)系幾乎不用代碼支持,只要設(shè)置好相應(yīng)的屬性就可以了。

  FileEdit、DirLabel、FileListBox、FileFilterComloList、 DirectoryListBox、DriveComboList六個(gè)控件間的屬性聯(lián)系如下:

  DriveComboList .DirList := DirectoryListBox;

  DirectoryListBox.DirLabel := DirLabel;

  DirectoryListBox.FileList := FileListBox;

  FileFilterComboList.FileList := FileListBox;

  FileListBox.FileEdit := FileEdit;

  以上聯(lián)系可以在設(shè)計(jì)時(shí)完成。只要打開相應(yīng)屬性的選擇列表框進(jìn)行選擇即可。也可以在運(yùn)行時(shí)利用如上的賦值語句建立聯(lián)系。

  文件控件的關(guān)鍵屬性基本上都在以上聯(lián)系中反映出來了。除此之外,F(xiàn)ileFilterComboList有一個(gè)Filter屬性,用來設(shè)置組合列表框的選擇項(xiàng);FileListBox 有一個(gè)Mask屬性,用于設(shè)置顯示文件的類型,這就允許FileListBox在脫離FileFilterComboList單獨(dú)應(yīng)用時(shí)仍能根據(jù)需要顯示特定的文件。在6.4節(jié)中我們將應(yīng)用這一功能。

  文件控件的方法、事件基本是從ListBox和ComboBox中繼承的。但FileListBox 中有一個(gè)ApplyFilePath方法很有用,我們將在后邊給出其用法。

  6.3.2 文件名瀏覽查找系統(tǒng)的設(shè)計(jì)思路

  作為文件控件的應(yīng)用實(shí)例,我們開發(fā)了一個(gè)簡(jiǎn)單的文件名瀏覽查找系統(tǒng)。這個(gè)系統(tǒng)可用于文件名的顯示,把選中的文件寫入列表框,并能按文件編輯框中輸入的通配符對(duì)文件進(jìn)行查找。

  表6.5 部件的設(shè)計(jì)

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

  部件 屬性 功能

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

  FileCtrForm Position=poDefault 主窗口

  DirLabel 顯示當(dāng)前目錄

  FileEdit TabOrder=0 顯示當(dāng)前文件/輸入文件顯示匹配符

  FileListBox1 FileEdit=FileEdit 顯示當(dāng)前目錄文件

  DirectoryListBox1 DirLabel=DirLabel 顯示當(dāng)前驅(qū)動(dòng)器目錄

  FileList= FileListBox1

  DriveComboBox1 DirList= DirectoryListBox1 選擇當(dāng)前驅(qū)動(dòng)器

  FilterComboBox1 FileList=FileListBox1 選擇文件顯示類型

  Filter='All Files(*.*)|*.*|

  Source Files(*.pas)|*.pas|

  Form Files(*.dfm)|*.dfm|

  Project Files(*.dpr)|*.dpr'

  ListBox1 顯示選中或查找的文件

  Button1 Caption='查找' 按 FileEdit 中的內(nèi)容進(jìn)行查找

  Button2 Caption='退出' 退出系統(tǒng)

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

上一頁  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)注明出處。
主站蜘蛛池模板: 狠狠色丁香久久综合五月 | 成人综合在线视频免费观看 | 五月婷婷免费视频 | 亚洲无砖砖区免费 | 91香蕉国产视频 | 欧美第一页草草影院 | 最近中文免费字幕在线播放 | 日韩高清一区二区三区五区七区 | 欧美激情一区二区亚洲专区 | 精品在线免费视频 | 一个人看www在线视频资源 | 窝窝视频成人影院午夜在线 | 人人揉人人添人人捏人人看 | 欧美太黄太色视频在线观看 | 国产精品青青 | 国产乱人视频在线播放不卡 | 一级做a爰片久久毛片武则天 | 国产欧美日韩亚洲 | 最近最好的中文字幕2019免费 | 伊人久久大香线蕉免费视频 | 你懂的在线视频网站 | 亚洲 欧美 日韩 在线 | 大胸美女被强吻胸动态图片 | 2020欧美极品hd18 | 精品亚洲视频在线 | 成人观看免费观看视频 | 夜夜躁日日躁狠狠久久 | 国产精品一区二区三 | 亚洲欧美精品一区天堂久久 | 我想看黄色一级片 | 成年女人毛片免费视频 | v视界影院视频一区二区三区 | 日韩3页| 一本三道a无线码一区v | 韩国成人理伦片免费 | 欧美在线伊人 | 亚洲已满18点击进入在线观看 | 精品一区二区视频 | 中国一及黄色片 | 视频一区在线观看 | 欧美巨大另类极品video |