初步的想法是,在调用文件前记录文件的属性如大小、时间等,在调用进行操作,并结束退出时再一次记录文件的属性,然后将两者对照,根据差别来判断是否被修改?
但具体如何实现,看大家有没有什么例子(包括OLE调用、属性对照等),因为时间紧迫,没多少时间去研究它们,求大家帮点忙!重分酬谢
贴上或者发到
但具体如何实现,看大家有没有什么例子(包括OLE调用、属性对照等),因为时间紧迫,没多少时间去研究它们,求大家帮点忙!重分酬谢
贴上或者发到
解决方案 »
- Delphi
- 關於用“存儲過程”與"直接在程式裡寫sql語句或用Query(Delphi)"查詢數據速度的問題,我一個同事的理解,讓我迷糊,因為他是前輩。
- indy: idudpserver的问题,知道的进来看看
- 用mediaplayer自做MP3播放器,在本本上播放正常,在台式机中播放象外星人,为什么?
- 关于数据的读写问题?
- 查了一下午了,实没办法,求救!WEBBROSWER打开一个URL,如何判断打开OR下载文件!能禁止下载文件吗?
- 和女朋友吵架了,用什么方法哄她才会开心~
- Delphi 为什么我用acreport 打印的时候 内详!
- 关于fastreport3的问题,急,各位高手请进
- 是不是表名不能当Tquery的参数传递
- 紧急求援!
- 请问哪里有"DELPHI 4.0编程技术内幕"下载??
以下是一个e.g:
Delphi自带了一个简单的Word例题,但功能太简单。通过查找VBA的说明,再对照Delphi的VCL,如下代码实现了基本的公文管理功能。 启动Word时用如下代码:
begin
try
Wordapplication.Connect;
except
MessageDlg('Word may not be installed', mtError, [mbOk], 0);
Abort;
end;
Wordapplication.Visible := True;
WordApplication.Caption := 'Delphi automation';
end; 关闭Word用如下代码。如果想保存Doc文件,请修改SaveChanges变量的内容:
var
SaveChanges, OriginalFormat, RouteDocument: OleVariant;
begin
SaveChanges := WdDoNotSaveChanges;
OriginalFormat := UnAssigned;
RouteDocument := UnAssigned;
try
WordApplication.Quit(SaveChanges, OriginalFormat, RouteDocument);
WordApplication.Disconnect;
except
on E: Exception do
begin
Showmessage(E.Message);
WordApplication.Disconnect;
end;
end;
end; 让Word打开一个指定的文件,需要先放置OpenDialog,然后调用WordApplication.Documents.Open:
var
ItemIndex :OleVariant;
FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert,
WritePasswordDocument, WritePasswordTemplate, Format: OleVariant;
begin
if not dlgOpen.Execute then
Exit; {Open document}
FileName := dlgOpen.FileName;
ConfirmConversions := False;
ReadOnly := False;
AddToRecentFiles := False;
PasswordDocument := '';
PasswordTemplate := '';
Revert := True;
WritePasswordDocument := '';
WritePasswordTemplate := '';
Format := wdOpenFormatDocument; WordApplication.Documents.Open( FileName, ConfirmConversions,
ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate,
Revert, WritePasswordDocument, WritePasswordTemplate, Format ); {Assign WordDocument component}
ItemIndex := 1;
WordDocument.ConnectTo(WordApplication.Documents.Item(ItemIndex)); {Turn Spell checking of because it takes a long time if enabled and slows down Winword}
WordApplication.Options.CheckSpellingAsYouType := False;
WordApplication.Options.CheckGrammarAsYouType := False;
end; 让Word替换标记字符串要使用WordDocument.Range.Find.Execute,这里用Delphi替换了<#Name>:
var
FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike,
MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace: OleVariant;
begin
FindText := '<#Name>';
MatchCase := False;
MatchWholeWord := True;
MatchWildcards := False;
MatchSoundsLike := False;
MatchAllWordForms := False;
Forward := True;
Wrap := wdFindContinue;
Format := False;
ReplaceWith := 'Delphi';
Replace := True; WordDocument.Range.Find.Execute( FindText, MatchCase, MatchWholeWord,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Format, ReplaceWith, Replace ); end; 上面这4段代码完成了公文管理的基本功能,再把它和数据库结合起来,就可以开发一个与Lotus Notes类似的产品了。
但是我这OLE可能调用doc/xls/ppt/txt等一系列基本的文件,都要判断的!
那我岂不是对于每种文件的属性及方法都要了解,我都不想用OLE做这事了,干脆直接shellexcute,然后按上面说的方法做得了
不知大家有没有什么更好的建议。
不用Ole或word的application,是操作系统基本的功能
何况我还要记录是哪个操作员对文件进行了修改?
是不能用OLE来调用多种文件呢,还是其它?我以前做过用OLE调用打开不同格式的多种文件,比如,图片、word文档、Excel文档等.这是我的打开方式:
在这里我用了ActiveX控件RichTextBox.
procedure TfrmContractOther.cmdInsertClick(Sender: TObject);
var
nCount:Integer;
sname:string;
strFileName:String;
begin
nCount := RichTextBox1.OLEObjects.Count;
sname := 'f'+inttostr(nCount);
if OpenDialog1.Execute() then
begin
strFileName := OpenDialog1.FileName;
RichTextBox1.OLEObjects.Add(nCount, sname ,strFileName,0);
end;
end;
D6支持office2000,D7支持officeXP
应用程序管理导入到系统中的文件,记录导入前的文件大小,时间等属性在数据库中,但数据库中只存文件路径等,不存文件,这些文件可以是任意格式的文件,不只是office文档。
我想实现的功能是:如果用户通过系统打开相应的文件进行修改,系统能记录该文件是被谁修改过,什么时候修改的等操作日志信息。
我开始想用OLE来操作,不知对各种格式的文件操作实现起来会不会很麻烦?
如果直接用ShellExecute来调用的话,用户何时关闭外部程序不能得到有效的控制,所以无法判断是否被修改。
我想大家给我点意见,怎样实现起来简单并且能达到目的?我用D6开发
有office的old服务
是的,修改时间我是可以得到,但问题是我上面提到的目的根本达不到啊!
如果用OLE的话,我如何去控制每种格式的文件,而且我不知道具体会有哪些文件格式,虽然大部分是常见的。
2.如果客户是用office建立或修改的文件,可以用Ole对象取得文件的详细信息,如果其它方式,就不可以
3.DocumentProperty 对象提供以下信息:
标题
主题
作者
关键词
备注
模板
上一个作者
修订次数
应用程序名
上次打印时间
创建时间
上次保存时间
编辑时间总计
页数
字数
字符数
安全性
类别
格式
经理
单位
字节数
行数
段落数
幻灯片数
备注
隐藏幻灯片
多媒体剪辑
如果用户是先关闭我开发的系统,再来关闭所修改的文档。有一个非常重要的信息无法记录:是谁修改了文件,这才是用户所需的功能。因为系统存在不同用户与不同权限。
如果这一点实现不了,只是得到文件被修改过及修改过的时间,无法追究修改人的责任。也没多大意义了,我也不想再把这个文件跟踪功能做进去了。