你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
Delphi实现按文件摘要属性查找文件(六)
 

其中InternalOpen方法负责打开文件,获取IPropertySetStorageIpropertyStorageIStorage三个接口的引用;GetPropertyByNameGetPropertyByID方法实现按属性各

和属性ID获取属性值。

该类比较简单,它只是实现了属性值的读取,而且一次只能读取一个属性,当然可以对该类进行扩充,使它可以处理属性数组,而且还可以实现写属性、删除属性和枚举属性。

值得注意的是,ActiveX.pas中没有包含StgOpenStorageEx的定义,必须自己定义。

主界面的查找按钮点击事件对指定查找目录及其子目录进行递归查找,如果指定的属性值等于文件摘要属性值,则在文件列表中增加该文件的全路径名,递归过程代码如下:

procedure TfrmMain.Matches(APath: String; AFileName: String);

var

  SR: TSearchRec;

  Res: Integer;

  P: TPropVariant;

  ID: Integer;

  FileName: WideString;

begin

  if APath[Length(APath)] <> '\' then

    APath := APath + '\';

  Res := FindFirst(APath + AFileName, faAnyFile, SR);

  if Res = 0 then

    try

      while Res = 0 do

      begin

        FileName := APath + SR.Name;

        if SR.Attr and faDirectory = faDirectory then

        begin

          if (SR.Name <> '.') and (SR.Name <> '..') then

            Matches(FileName, AFileName);

        end

        else

        begin

          PropertySet.FileName := FileName;

          try

            PropertySet.Open;

            try

              ID := Integer(cbPropertyName.Items.Objects[cbPropertyName.ItemIndex]);

              P := PropertySet.GetPropertyByID(ID);

              if UpperCase(P.pszVal) = UpperCase(lePropertyValue.Text) then

                lbFiles.Items.Add(FileName);

            finally

              PropertySet.Close;

            end;

          except

            on EOleSysError do

              ;

          end;

        end;

        Res := FindNext(SR);

      end;

    finally

      FindClose(SR);

    end;

end;

 限于篇幅,该实例目前还不能查找两个数值之间的整数值、日期/时间属性或字符串属性中的子字符串,但这些限制很容易就可以取消。

 本程序在Windows XP系统用Delphi 7 编译、调试通过,程序运行结果如图2所示。

2  程序运行结果

 

4 结语

Delphi实现根据文件摘要属性查找文件的方法,对于希望使用摘要属性来管理文件的用户来说,将提供极大的便利。此外,还可以在本实例的基础上进一步扩展,如摘要属性的管理、与资源管理器上下文菜单的集成等,能够实现一个方便的文件管理工具。

 

 


参考文献

 

1Eric Harmon著,陈旭,杨彬,刘怀,等译. Delphi COM深入编程. 北京:机械工业出版社,2000.

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089