亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 017.htm

?? delphi編程
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI基礎教程-->第六章 文件管理(二)</TITLE>
<META NAME="keywords" CONTENT=" DELPHI基礎教程 第六章 文件管理(二)">
<META NAME="description" CONTENT=" - DELPHI基礎教程 - 第六章 文件管理(二)">

<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%"  bgcolor="#e0e0e0"><strong><A HREF="018.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR>
<A HREF="016.htm"><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR>

<A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR>
<A HREF="../../../../index.htm"><FONT style="FONT-SIZE: 9pt">回首頁</font></A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">第六章 文件管理(二)</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p>6.2.7 <font face="宋體" lang="ZH-CN">記錄的刪除、插入、排序 </p>
<p>  刪除一條記錄的基本思路是:獲取當前記錄的位置并把該位置后的記錄逐個向前移動。</font>
<font face="宋體" lang="ZH-CN">文件在最后一條記錄前截斷。 </p>
<p>  </font>for i:=CurrentRec+1 to Count-1 do</p>
<p>begin</p>
<p>seek(MethodFile,i);</p>
<p>read(MethodFile,MethodRec);</p>
<p>seek(MethodFile,i-1);</p>
<p>Write(MethodFile,MethodRec);</p>
<p>end;</p>
<p>Truncate(MethodFile);<font face="宋體" lang="ZH-CN"> </font></p>
<p><font face="宋體" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 為避免誤刪除,在進行刪除操作前彈出一個消息框進行確認。刪除后要更新全局變量的值和顯示內容: </p>
</font><p>Count := Count - 1;</p>
<p>ChangeGrid; </p>
<p><font face="宋體" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 完整的程序如下: </p>
</font><p>procedure TRecFileForm.DeleteButtonClick(Sender: TObject);</p>
<p>var</p>
<p>NewFile: MethodFileType;</p>
<p>MethodRec: TMethod;</p>
<p>NewFileName: String;</p>
<p>i: Integer;</p>
<p>begin</p>
<p>if FileOpened = False then Exit;</p>
<p>CurrentRec := StringGrid1.Row-1;</p>
<p>if CurrentRec &lt; 0 then Exit;</p>
<p>if MessageDlg('Delete Current Record ?', mtConfirmation,</p>
<p>[mbYes, mbNo], 0) = idYes then</p>
<p>begin</p>
<p>HazAttr.text := '';</p>
<p>for I := CurrentRec+1 to Count-1 do</p>
<p>begin</p>
<p>seek(MethodFile,i);</p>
<p>read(MethodFile,MethodRec);</p>
<p>seek(MethodFile,i-1);</p>
<p>Write(MethodFile,MethodRec);</p>
<p>end;</p>
<p>Truncate(MethodFile);</p>
<p>Count := Count-1;</p>
<p>ChangeGrid;</p>
<p>end;</p>
<p>end;</p>
<p><font face="宋體" lang="ZH-CN">  這里所顯示的刪除操作簡單明了。但在程序開始設計時我卻走了一條彎路,后來發現雖然這種方法用于記錄的刪除操作顯得笨拙、可笑,但卻恰恰是記錄插入、排序的思想。</font></p>
<font face="宋體" lang="ZH-CN"><p>  這種思想的核心是創建一個新文件保存更新后的內容。若新文件順利創建,則刪除原文件,否則恢復原來的文件。程序清單如下: </p>
</font><p>procedure TRecFileForm.DeleteButtonClick(Sender: TObject);</p>
<p>var</p>
<p>NewFile: MethodFileType;</p>
<p>MethodRec: TMethod;</p>
<p>NewFileName: String;</p>
<p>i: Integer;</p>
<p>begin</p>
<p>if FileOpened = False then Exit;</p>
<p>CurrentRec := StringGrid1.Row-1;</p>
<p>if CurrentRec &lt; 0 then Exit;</p>
<p>if MessageDlg('Delete Current Record ?', mtConfirmation,</p>
<p>[mbYes, mbNo], 0) = idYes then</p>
<p>begin</p>
<p>HazAttr.text := '';</p>
<p>NewFileName := ChangeFileExt(FileName,'.sav');</p>
<p>try</p>
<p>AssignFile(NewFile,FileName);</p>
<p>ReWrite(NewFile);</p>
<p>Except</p>
<p>On EInOutError do</p>
<p>begin</p>
<p>Rename(MethodFile,FileName);</p>
<p>Exit;</p>
<p>end;</p>
<p>end;</p>
<p>for i := 1 to Count do</p>
<p>if I &lt;&gt; CurrentRec+1 then</p>
<p>begin</p>
<p>MethodRec := GridToRec(i);</p>
<p>Write(NewFile,MethodRec);</p>
<p>end;</p>
<p>closeFile(MethodFile);</p>
<p>try</p>
<p>AssignFile(MethodFile,Filename);</p>
<p>Reset(MethodFile);</p>
<p>except</p>
<p>on EInOutError do</p>
<p>begin</p>
<p>DeleteFile(FileName);</p>
<p>AssignFile(MethodFile,NewFileName);</p>
<p>Reset(MethodFile);</p>
<p>Rename(MethodFile,FileName);</p>
<p>Exit;</p>
<p>end;</p>
<p>DeleteFile(NewFileName);</p>
<p>Count:=Count-1;</p>
<p>ChangeGrid;</p>
<p>end;</p>
<p>end;</p>
<font face="宋體" lang="ZH-CN"><p>  對于記錄插入,方法基本同上。對于排序,可先將關鍵域讀入排序,而后再按排序結果對應的記錄號順序重寫文件。 </p>
</font><p>6.2.8 <font face="宋體" lang="ZH-CN">結果綜合 </p>
<p>  對不同方法的評估結果,可按一定的公式進行綜合。當用戶按下“計算”按鈕時,系統進行計算并把綜合結果寫入</font>HazAttr<font
face="宋體" lang="ZH-CN">只讀編輯框中。</p>
<p>  為保證結果顯示的正確性,每次增加、修改、刪除操作確認后</font>HazAttr<font
face="宋體" lang="ZH-CN">編輯框清空。 </p>
</font><p>6.2.9 <font face="宋體" lang="ZH-CN">編輯對話框的輸入檢查 </p>
<p>  當用戶單擊“增加”或“修改”按鈕時系統將彈出一個編輯對話框,讓用戶輸入或修改記錄內容。其中的三個編輯框,一個組合列表框分別對應</font>TMethod
<font face="宋體" lang="ZH-CN">的四個域。由于</font>TMethod<font face="宋體"
lang="ZH-CN">的</font>Result<font face="宋體" lang="ZH-CN">域必須是</font>[0,1]<font
face="宋體" lang="ZH-CN">間的小數,因此當用戶按</font>OK<font face="宋體"
lang="ZH-CN">鍵關閉對話框時應進行類型和范圍檢查。</p>
<p>  在</font>VB<font face="宋體" lang="ZH-CN">中我做過同樣的工作,那時需要對用戶輸入的鍵碼逐個進行判斷。但這種方法很繁瑣、很難做圓滿</font>(<font
face="宋體" lang="ZH-CN">如不能很好地支持編輯鍵</font>)<font face="宋體"
lang="ZH-CN">。而</font>Object Pascal<font face="宋體" lang="ZH-CN">提供了更好的方法。這種方法的關鍵就在于它的類型轉換函數</font>Val<font
face="宋體" lang="ZH-CN">: </p>
</font><p>procedure Val(Str: String;var V; var Code: Integer)<font face="宋體"
lang="ZH-CN">; </p>
<p>  </font>V<font face="宋體" lang="ZH-CN">是由</font>Str<font face="宋體"
lang="ZH-CN">轉換成的整型或實型數。若字符串非法,則出錯位置返至</font>Code;<font
face="宋體" lang="ZH-CN">否則置</font>Code<font face="宋體" lang="ZH-CN">為</font>0<font
face="宋體" lang="ZH-CN">。字符串非法并不會引發一個轉換異常。</p>
<p>  如果轉換后的數超出了我們的范圍,則顯式把</font>Code<font
face="宋體" lang="ZH-CN">置為</font>-1<font face="宋體" lang="ZH-CN">。最后統一通過檢測</font>Code<font
face="宋體" lang="ZH-CN">是否為</font>0<font face="宋體" lang="ZH-CN">來判斷輸入是否合法。</p>
<p>  我們把輸入檢查放在對話框的</font>OnCloseQuery<font face="宋體"
lang="ZH-CN">事件處理過程中。如輸入非法,則禁止對話框關閉,并將輸入焦點置于</font>Result<font
face="宋體" lang="ZH-CN">編輯框中。但假如用戶按了</font>Cancel<font
face="宋體" lang="ZH-CN">按鈕,則這種檢查是多余的。為此定義一個布爾變量</font>IsCancel<font
face="宋體" lang="ZH-CN">,對話框生成時置為</font>False<font face="宋體"
lang="ZH-CN">。假如用戶按下</font>Cancel<font face="宋體" lang="ZH-CN">,則置為</font>True<font
face="宋體" lang="ZH-CN">,此時</font>OnCloseQuery<font face="宋體" lang="ZH-CN">事件不進行輸入檢查。</p>
<p>  對話框的</font>OnCloseQuery<font face="宋體" lang="ZH-CN">事件處理過程的程序清單如下: </p>
</font><p>procedure TEditForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);</p>
<p>var</p>
<p>Res: Real;</p>
<p>k: Integer;</p>
<p>begin</p>
<p>if IsCancel = False then</p>
<p>begin</p>
<p>val(Result.text,Res,k);</p>
<p>if (Res &gt; 1) or (Res &lt; 0) then k := -1;</p>
<p>if k &lt;&gt; 0 then</p>
<p>begin</p>
<p>MessageDlg('<font face="宋體" lang="ZH-CN">非法輸入</font> <font face="宋體"
lang="ZH-CN">!</font>',mtWarning,[mbOK],0);</p>
<p>Result.text := '';</p>
<p>CanClose := False;</p>
<p>Result.SetFocus;</p>
<p>end;</p>
<p>end;</p>
<p>end; </p>
<p>6.2.10 <font face="宋體" lang="ZH-CN">文件和系統的關閉 </p>
<p>  文件關閉須調用</font>CloseFile<font face="宋體" lang="ZH-CN">過程: </p>
<p>  </font> CloseFile(MethodFile); </p>
<p><font face="宋體" lang="ZH-CN">并對系統的狀態重新進行設置。 </font></p>
<p><font face="宋體" lang="ZH-CN">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系統關閉時首先檢測當前是否有打開的文件。若有則先關閉文件。這在主窗口的</font>OnCloseQuery<font
face="宋體" lang="ZH-CN">事件中實現。</font></p>
<p><font face="宋體" lang="ZH-CN">實現文件關閉的程序清單如下: </p>
</font><p>procedure TRecFileForm.CloseButtonClick(Sender: TObject);</p>
<p>begin</p>
<p>if FileOpened then</p>
<p>begin</p>
<p>CloseFile(MethodFile);</p>
<p>FileOpened := False;</p>
<p>ClearGrid;</p>
<p>OpenButton.Enabled := True;</p>
<p>NewButton.Enabled := True;</p>
<p>CloseButton.Enabled := False;</p>
<p>RecFileForm.Caption := FormCaption;</p>
<p>end;</p>
<p>end; </p>
<p><font face="宋體" lang="ZH-CN">實現系統關閉前檢查的程序清單如下:</p>
</font><p>procedure TRecFileForm.FormCloseQuery(Sender: TObject;</p>
<p>var CanClose: Boolean);</p>
<p>begin</p>
<p>if FileOpened then</p>
<p>closeFile(MethodFile);</p>
<p>end; </p>
<p>6.2.11 <font face="宋體" lang="ZH-CN">記錄文件小結 </p>
<p>  我們所舉的例子雖然簡單,但基本覆蓋了記錄文件操作的主要方面。這里關鍵問題在于靈活應用</font>Delphi<font
face="宋體" lang="ZH-CN">提供的文件管理函數。同時,為了保證程序的健壯性應對異常進行捕獲并處理。在數據庫應用技術發展的今天,記錄文件的重要性也許有所下降,但對象我們這里所處理的簡單問題它仍有用武之地。</p>
<p>  這里所舉的例子一次只能處理一個文件。但讀者可以很容易把它改為一個</font>MDI<font
face="宋體" lang="ZH-CN">程序。雖然對于這里的實際情況來說,似乎并無必要。 </p>
</font><p align="center">6.3 <font face="宋體" lang="ZH-CN">文件控件的應用 </p>
<p>  </font>Delphi<font face="宋體" lang="ZH-CN">文件管理的最大特色是提供了一組文件操作控件。利用這些控件我們可以快速開發一個文件名瀏覽系統。其功能強大與其所需書寫代碼之少所形成的強烈反差,正是</font>Dephi<font
face="宋體" lang="ZH-CN">生命力的體現。 </p>
</font><p>6.3.1 <font face="宋體" lang="ZH-CN">文件控件及其相互關系 </p>
<p>  </font>Delphi<font face="宋體" lang="ZH-CN">提供的專用文件控件如下表所示。 </p>
<p>   表</font>6.4 Delphi<font face="宋體" lang="ZH-CN">專用文件控件━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</font></p>
<font face="宋體" lang="ZH-CN"><p>控件名</font> <font face="宋體" lang="ZH-CN">功
能</font></p>
<p><font face="宋體" lang="ZH-CN">─────────────────────────────────────</p>
</font><p>DriveComboBox <font face="宋體" lang="ZH-CN">驅動器組合列表框。用于選擇當前驅動器</p>
</font><p>FileListBox <font face="宋體" lang="ZH-CN">文件列表框。用于顯示當前目錄中的文件和選中當前文件</p>
</font><p>FilterComboBox <font face="宋體" lang="ZH-CN">文件類型組合列表框。用于選擇顯示文件的類型</p>
</font><p>DirectoryOutline <font face="宋體" lang="ZH-CN">目錄樹</font>(6.4<font
face="宋體" lang="ZH-CN">節專門介紹</font>) </p>
<p><font face="宋體" lang="ZH-CN">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</p>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丝袜第三区| 亚洲一级电影视频| 亚洲激情男女视频| 精久久久久久久久久久| 在线观看国产91| 久久九九国产精品| 免费看欧美美女黄的网站| 91日韩在线专区| 久久久激情视频| 美女在线一区二区| 欧美日韩国产a| 一色屋精品亚洲香蕉网站| 精品一二三四区| 欧美三级三级三级| 亚洲自拍偷拍网站| 99re这里都是精品| 国产日韩欧美电影| 九一九一国产精品| 欧美一区二区在线免费播放| 夜夜爽夜夜爽精品视频| 成人免费高清视频在线观看| 日韩欧美国产麻豆| 日韩成人免费在线| 欧美一区二区三级| 久久精品国内一区二区三区| 制服丝袜成人动漫| 日本午夜精品视频在线观看| 8v天堂国产在线一区二区| 午夜免费欧美电影| 欧美日韩激情一区二区| 亚洲国产一区视频| 制服.丝袜.亚洲.中文.综合| 亚洲一区二区三区激情| 欧美日本在线播放| 日本不卡不码高清免费观看 | 久久99精品视频| 日韩午夜激情视频| 久久精品国产久精国产爱| 精品国产人成亚洲区| 国产一区二区三区观看| 国产嫩草影院久久久久| av网站免费线看精品| 亚洲素人一区二区| 欧美日韩国产天堂| 久久精品噜噜噜成人88aⅴ| 欧美mv日韩mv国产网站app| 激情五月婷婷综合| 日本一区二区三区国色天香| 99久精品国产| 亚洲第一成人在线| 欧美成人a在线| 成人黄色777网| 亚洲国产一区二区a毛片| 69av一区二区三区| 国产原创一区二区三区| 中文字幕在线一区二区三区| 在线视频你懂得一区二区三区| 亚洲成人精品一区二区| 欧美videos大乳护士334| 暴力调教一区二区三区| 亚洲成a人在线观看| 久久影院电视剧免费观看| 波多野结衣在线一区| 亚洲成人三级小说| 欧美精品一区二区高清在线观看| 成人夜色视频网站在线观看| 亚洲一区二区av在线| 久久久www成人免费毛片麻豆 | 成人综合在线视频| 亚洲成人资源在线| 国产亚洲视频系列| 欧美影视一区在线| 国产成人高清在线| 天堂久久一区二区三区| 国产日产欧美一区| 欧美剧在线免费观看网站| 国产成人鲁色资源国产91色综| 亚洲国产综合91精品麻豆| 久久亚洲综合色一区二区三区 | 国模无码大尺度一区二区三区| 中文字幕一区二区不卡| 日韩精品一区二区三区老鸭窝 | 天天综合日日夜夜精品| 欧美国产日韩一二三区| 日韩欧美中文字幕精品| 欧美羞羞免费网站| 成人在线综合网| 久久成人久久爱| 亚洲第一二三四区| 亚洲黄色性网站| 国产精品污污网站在线观看| 日韩久久精品一区| 这里只有精品99re| 欧美亚一区二区| 成人教育av在线| 国产最新精品免费| 精品制服美女久久| 免费人成网站在线观看欧美高清| 亚洲欧美日韩系列| 最新不卡av在线| 日本一区二区三区免费乱视频| 久久综合久久鬼色| 精品国产一区二区三区久久久蜜月| 91久久香蕉国产日韩欧美9色| 99re这里都是精品| 色综合久久99| av男人天堂一区| 96av麻豆蜜桃一区二区| gogogo免费视频观看亚洲一| 久久国产婷婷国产香蕉| 日av在线不卡| 久久精品久久99精品久久| 久久99精品视频| 黄色精品一二区| 国产麻豆日韩欧美久久| 国产成人综合亚洲网站| 成人深夜视频在线观看| 国产成人精品综合在线观看 | 国产精品天美传媒| 国产真实精品久久二三区| 蜜乳av一区二区| 青青草原综合久久大伊人精品| 亚洲电影第三页| 免费的成人av| 国产福利不卡视频| 99久久伊人精品| 欧美性做爰猛烈叫床潮| 欧美精品777| 欧美va日韩va| 日本一区二区三区视频视频| 中文字幕一区二区三区蜜月| 一区二区三区在线观看网站| 亚洲综合精品久久| 蜜臀精品一区二区三区在线观看| 久久国产欧美日韩精品| 国产乱子伦视频一区二区三区| 国产91露脸合集magnet| 99久久99久久精品免费看蜜桃| 欧美午夜寂寞影院| 日韩一区二区三| 欧美激情中文字幕一区二区| 亚洲日本电影在线| 日本中文一区二区三区| 风间由美一区二区三区在线观看| 99在线精品一区二区三区| 欧美影视一区在线| 2014亚洲片线观看视频免费| 中文字幕中文字幕在线一区| 午夜欧美大尺度福利影院在线看| 黑人巨大精品欧美一区| 一本一道久久a久久精品| 欧美欧美欧美欧美首页| 国产午夜精品久久久久久免费视| 伊人夜夜躁av伊人久久| 国产最新精品精品你懂的| 色琪琪一区二区三区亚洲区| 精品入口麻豆88视频| 亚洲欧美综合在线精品| 蜜臀av性久久久久蜜臀aⅴ| 色综合久久久久综合| 精品久久久久久久久久久久久久久久久| 国产精品久久久一本精品| 免费国产亚洲视频| 99久久99久久精品国产片果冻| 欧美成人一区二区| 亚洲国产视频网站| 99国产精品久久久久久久久久| 欧美成人猛片aaaaaaa| 亚洲综合成人网| www.成人在线| 久久网这里都是精品| 日韩高清不卡在线| 99精品一区二区三区| 欧美精品一区二| 日韩av中文字幕一区二区三区| av不卡在线播放| 欧美精品一区视频| 美女免费视频一区二区| 欧美日韩在线观看一区二区| 国产亚洲污的网站| 国产一区二区三区四区五区美女| 欧美日韩国产高清一区| 亚洲另类色综合网站| 成人精品一区二区三区中文字幕| 欧美日本一区二区在线观看| 国产精品第五页| 懂色av噜噜一区二区三区av| 久久免费午夜影院| 激情综合色综合久久| 欧美一区二区三区电影| 日韩专区一卡二卡| 欧美日韩大陆一区二区| 亚洲资源中文字幕| 欧美系列亚洲系列| 亚洲国产成人av| 欧美精品丝袜久久久中文字幕| 亚洲一区二区三区精品在线| 欧美色综合天天久久综合精品| 一区二区三区日韩欧美| 91久久精品国产91性色tv|