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

end;

 

function TPropertySet.GetPropertyByID(APropertyID: Integer): TPropVariant;

var

  ps: PPropSpecArray;

  pv: PPropVariantArray;

begin

  ps := nil;

  pv := nil;

  try

    GetMem(ps, sizeof(TPropSpec));

    GetMem(pv, sizeof(TPropVariant));

    ps[0].ulKind := PRSPEC_PROPID;

    ps[0].propid := APropertyID;

    OleCheck(FPropertyStorage.ReadMultiple(1, @ps[0], @pv[0]));

    Result := pv[0];

  finally

    if ps <> nil then

      FreeMem(ps);

    if pv <> nil then

      FreeMem(pv);

  end;

end;

 

procedure TPropertySet.InternalOpen;

begin

  if FFileName = '' then

    raise Exception.Create('文件名必须设置!');

  OleCheck(StgOpenStorageEx(PWChar(FFileName), STGM_READ or STGM_SHARE_DENY_WRITE,

    STGFMT_ANY, 0, nil, nil, @IID_IPropertySetStorage, FStorage));

  FPropertySetStorage := FStorage as IPropertySetStorage;

  OleCheck(FPropertySetStorage.Open(FStreamGUID, STGM_READ or STGM_SHARE_EXCLUSIVE,

    FPropertyStorage));

end;

 

procedure TPropertySet.InternalClose;

begin

  FPropertyStorage := nil;

  FPropertySetStorage := nil;

  FStorage := nil;

end;

 

procedure TPropertySet.SetActive(const Value: Boolean);

begin

  if FActive <> Value then

  begin

    if Value then

      InternalOpen

    else

      InternalClose;

    FActive := Value;

  end;

end;

 

procedure TPropertySet.SetFileName(const Value: WideString);

begin

  if FFileName <> Value then

  begin

    if FActive then

    begin

      InternalClose;

      FFileName := Value;

      InternalOpen;

    end

    else

      FFileName := Value;

  end;

end;

 

procedure TPropertySet.SetStreamGUID(const Value: TGUID);

begin

  if FStreamGUID <> Value then

  begin

    if FActive then

    begin

      InternalClose;

      FStreamGUID := Value;

      InternalOpen;

    end

    else

      FStreamGUID := Value;

  end;

end;

 

end.

  推荐精品文章

·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