代码:
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本身是“写”操作的缘故。
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本身是“写”操作的缘故。
解决方案 »
- 请问我在查询数据库中的报表时,其中有字段为2009/08/05,如果在edit中输入2009/08/05时,查询2009/08的所有内容?
- 1000分求一条“鱼”源码,求不到散分给大家!顶者有分!
- 路过
- ADOQuery+DBGrideh 的问题
- 各位进来看看 如何实现解析HTML代码!
- 急问:关于DLL的问题
- 请问如何解决这种错误?
- 读Ini文件中的值放到TStrings中去,为什么和我想的不一样,请进来看,,,在线等,不够还可以加分
- @@@@@@关于数据库的问题◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
- 定时屏幕取词
- 如何将鼠标键盘的动作存储下来!!
- 如何分别获取声音及视频的波形图,并且可以编辑这边波形图?
上面的问题我已经解决了,使用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时间戳改变的缘故,后来证实跟时间戳没有关系的。但两次写入,差异只有四个字节。