亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩在线卡一卡二| 国产高清亚洲一区| 欧美在线999| 香蕉久久一区二区不卡无毒影院| 成人黄色电影在线| ...av二区三区久久精品| 91亚洲精华国产精华精华液| 亚洲视频电影在线| 在线精品亚洲一区二区不卡| 天天操天天综合网| 精品国产91久久久久久久妲己| 精品无人码麻豆乱码1区2区| 久久精品亚洲国产奇米99| 91国产成人在线| 国产精品自拍在线| 亚洲激情av在线| 3atv一区二区三区| 国产裸体歌舞团一区二区| 国产精品区一区二区三区| 欧美在线不卡视频| 激情综合色综合久久综合| 国产精品国产三级国产| 欧美喷潮久久久xxxxx| 国产69精品久久久久毛片| 亚洲午夜精品网| 日韩一级片网站| 色婷婷av一区二区三区大白胸 | 欧美激情中文字幕一区二区| 欧美网站一区二区| 国产mv日韩mv欧美| 国产精品亚洲专一区二区三区| 亚洲成人av一区二区| 中文字幕一区二区视频| 久久久久久久电影| 精品国产乱码久久| 91精品国产色综合久久不卡电影 | 色激情天天射综合网| 国产成人av一区| 日本v片在线高清不卡在线观看| 一区二区三区在线观看网站| 国产欧美一区二区三区沐欲| 欧美一区二区精品久久911| 99在线热播精品免费| 精品一二线国产| 久久国产精品无码网站| 日韩精品色哟哟| 亚洲国产视频在线| 亚洲高清视频中文字幕| 尤物在线观看一区| 亚洲电影一区二区三区| 亚洲乱码国产乱码精品精98午夜| 中文字幕亚洲一区二区va在线| 亚洲国产高清在线观看视频| 精品久久久久av影院| 91福利小视频| 欧美中文字幕一区| 欧美老女人在线| 日韩欧美一区二区三区在线| 88在线观看91蜜桃国自产| 欧美日韩亚洲国产综合| 色88888久久久久久影院野外| 99vv1com这只有精品| 成人午夜精品一区二区三区| 奇米精品一区二区三区在线观看 | 中文字幕一区三区| 国产三级精品视频| 久久久亚洲精品一区二区三区| 日韩一区二区精品在线观看| 日韩亚洲欧美高清| 日韩三级高清在线| 337p亚洲精品色噜噜| 91搞黄在线观看| 欧美日韩高清一区二区三区| 欧美日韩亚洲综合一区二区三区| 在线精品视频小说1| 欧美在线视频日韩| 日韩一区二区三区免费看 | 久久99精品国产91久久来源| 久久99国产精品麻豆| 国产黄色精品视频| 91蝌蚪porny九色| 色悠久久久久综合欧美99| 91老司机福利 在线| 91精品欧美综合在线观看最新| 欧美一区二区国产| 久久影院午夜片一区| 欧美日韩成人一区二区| 91精品国产综合久久久久久久久久 | 精品少妇一区二区三区免费观看| 日韩免费看网站| 综合欧美一区二区三区| 日韩影视精彩在线| 国产成人aaa| 欧美一区二区久久久| 亚洲精品美国一| 国产精一区二区三区| 欧美酷刑日本凌虐凌虐| 亚洲国产精品99久久久久久久久| 日韩激情在线观看| 91色.com| 中文字幕欧美区| 日本欧美一区二区在线观看| eeuss鲁片一区二区三区在线看| 欧美丰满少妇xxxbbb| 亚洲日本va在线观看| 国产v综合v亚洲欧| 精品999在线播放| 午夜国产精品影院在线观看| 91视频在线观看| 中文字幕第一页久久| 蜜臀精品久久久久久蜜臀| 色综合中文综合网| 亚洲影院免费观看| 欧美日韩一区二区三区四区| 国产人妖乱国产精品人妖| 麻豆91在线播放免费| 欧美三级韩国三级日本三斤| 美国毛片一区二区| 欧美三级电影一区| 一区二区三区精品视频| 成人综合在线网站| 国产精品久久久久久久久久久免费看| 黑人巨大精品欧美一区| 91精品中文字幕一区二区三区| 亚洲精品一二三| 一本高清dvd不卡在线观看| 国产婷婷一区二区| 国产99久久久久| 国产丝袜美腿一区二区三区| 国产在线播放一区三区四| 欧美成人精品3d动漫h| 久久99国产乱子伦精品免费| www激情久久| 国产精品自拍在线| 国产精品久久久久久久久快鸭| 99久久精品国产观看| 亚洲人精品一区| 欧美日韩中文字幕精品| 日本欧美在线看| 久久婷婷综合激情| 国产精品丝袜91| 色欧美片视频在线观看在线视频| 亚洲欧美日韩久久| 精品婷婷伊人一区三区三| 日韩成人免费电影| 精品国产一区二区精华| 国产成人综合亚洲91猫咪| 亚洲日穴在线视频| 欧美一区二区三区视频在线| 国产一区二区毛片| 亚洲九九爱视频| 欧美久久久久久久久| 精品美女一区二区| 国产成人精品免费看| 亚洲激情一二三区| 欧美精品一区二区三| 成人教育av在线| 亚洲国产精品一区二区www| 日韩精品在线网站| bt7086福利一区国产| 午夜精品久久久久久久久久| 国产电影一区二区三区| 亚洲一本大道在线| 久久综合久色欧美综合狠狠| 91色在线porny| 国产在线不卡一区| 亚洲永久精品国产| 久久先锋影音av鲁色资源网| 日本精品视频一区二区| 国产乱码精品一区二区三区五月婷| 日韩美女啊v在线免费观看| 日韩一区二区三区观看| 91社区在线播放| 国产成人午夜电影网| 天天影视涩香欲综合网| 亚洲免费大片在线观看| 久久先锋影音av鲁色资源网| 欧美在线观看一二区| 丁香一区二区三区| 看电视剧不卡顿的网站| 亚洲在线视频免费观看| 欧美韩日一区二区三区| 日韩欧美一区二区三区在线| 色妞www精品视频| 东方aⅴ免费观看久久av| 精品一区二区久久久| 日韩综合小视频| 亚洲一区在线观看免费 | 不卡的av电影| 国产乱妇无码大片在线观看| 日日摸夜夜添夜夜添精品视频| 一区二区三区精品在线观看| 中文在线资源观看网站视频免费不卡| 日韩精品自拍偷拍| 在线播放欧美女士性生活| 在线亚洲高清视频| 色天天综合色天天久久| 91麻豆福利精品推荐| 91麻豆福利精品推荐| a美女胸又www黄视频久久|