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。