程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第六章-文件管理(三)(4)

第六章-文件管理(三)(4)

編輯:Delphi

6.4.6 其它文件管理功能的實現 

在子窗口的Function菜單中,定義了一些其它的文件管理功能:

● Search :查找一個給定名字的文件,若存在則顯示該文件屬性

● Disk View :顯示當前驅動器的大小和剩余空間

● View type :確定顯示文件的類型 

6.4.6.1 文件查找 

當用戶單擊Search菜單項時,程序彈出一個對話框(如圖6.10),要求輸入待查找的文件名和查找路徑。文件名可以是通配符。當用戶確認後程序顯示第一個匹配文件的屬性(如圖6.9)。查找不到匹配文件則給出相應的信息。

在實現這一功能的最初設計中,我試圖使用FileSearch函數,這個函數允許在多個不同路徑中查找。但可惜的是:也許由於系統設計者的失誤,這個函數並沒有返回它應該返回的東西(第一個匹配文件的全路徑名),而是仍把輸入的匹配符返回。

沒有辦法我只能再次使用FindFirst,這個函數的特性在6.3節中已進行了介紹。下面是這一功能的實現代碼。 

procedure TFMForm.search1Click(Sender: TObject);

var

SearchForm: TSearchForm;

FileAttrForm: TFileAttrForm;

FindIt,path: String;

SearchRec: TSearchRec;

Return: Integer;

begin

SearchForm := TSearchForm.Create(self);

with SearchForm do

begin

SearchFile.text := '';

SearchPath.text := DirectoryOutline.Directory;

if (ShowModal <> idCancel) and

(SearchFile.Text <> '') and (SearchPath.text <> '') then

begin

FindIt := SearchPath.text+'\'+SearchFile.text;

Return := FindFirst(FindIt,faAnyFile,SearchRec);

if Return <> 0 then

FindIt := ''

else

FindIt := ExpandFileName(SearchRec.Name);

end;

if FindIt = '' then

MessageDlg('Cannot find the file in current directory.',

mtWarning, [mbOk], 0)

else

begin

Path := ExtractFilePath(FindIt);

FindIt := ExtractFileName(FindIt);

FileAttrForm := TFileAttrForm.Create(self);

ShowFileAttr(FileAttrForm,FindIt,Path);

end;

end;

end; 

6.4.6.2 顯示磁盤信息

當用戶單擊Disk View菜單項時,將彈出一個TDiskViewForm類型的對話框,用來顯示當前磁盤的信息

磁盤信息的獲取是在DiskViewForm中DriveEdit編輯框的OnChange事件處理過程中實現的。 

procedure TDiskViewForm.driveEditChange(Sender: TObject);

var

dr: Byte;

Free,Total: LongInt;

begin

Free := DiskFree(0);

Total := DiskSize(0);

FreeSpace.text := IntToStr(Free)+ ' bytes.';

TotalSpace.text := IntToStr(Total) + ' bytes.';

end;

DiskFree、DiskSize帶參數為0表示當前驅動器。讀者可以很容易把它改成按用戶輸入顯示磁盤信息的情況。

DiskViewForm中的三個編輯框設計時都令ReadOnly為True。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved