代码:
var nTime: TFileTime;
    nStorage: IStorage;
begin
  StgOpenDocFile(....nStorage);
  //打开复合文档
  nTime.dwlow := 11;
  nTime.dwHi := 22;
  //时间
  nStorage.SetElementTimes(nil, nTime, nTime, nTime);
  //设置Root Storage的访问,修改,创建时间
end;问题是:当SetElementTimes操作成功后,创建时间被改为(low:11;Hi:22),说明操作是成功的。但修改时间和访问时间没有被改动,是不是因为SetElementTimes本身是“写”操作的缘故。

解决方案 »

  1.   

    ^_^,等的花儿谢咯。
    上面的问题我已经解决了,使用StgSetTime可以实现修改根时间戳的功能。再问:
    function WriteString(nStr: string): boolean;
    begin
      //在root Storage下用IStream写入一个字符串
    end;var nMD5:string;
    begin
      WriteString('aaa'); 
      nMD5 := MD5File('Text.Doc');
      //对文件作摘要  WriteString('aaa'); 
      nMD5 := MD5File('Text.Doc');
      //对文件作摘要,重复了一次
    end;问题是:向Text.Doc写入同一个字符串'aaa'两次,但校验的MD5值确不一样。开始我以为是Root Storage时间戳改变的缘故,后来证实跟时间戳没有关系的。但两次写入,差异只有四个字节。