【发布时间】:2011-03-07 09:01:35
【问题描述】:
我有一个 Delphi 7 程序,它必须复制一个 docx 文件。我正在使用 Windows API CopyFile 函数。问题是这个函数似乎对旧文档格式进行了隐藏转换。 第一件事:复制后文件大小增加。 第二:在 Office 2007 中打开文件时,我收到一条错误消息,指出:检查您对文档或磁盘的权限,检查可用磁盘空间。
而且奇怪的是:如果我在 TotalCommander 中将复制文件的扩展名从 docx 更改为 doc,它会正常打开。所以它似乎做了一个不知道为什么的隐藏转换。
在两台不同的计算机上测试。都 Win XP Prof SP3,Office 2007 Prof Plus SP2
有什么想法吗?
函数体如下:
function TDlgNowySzablon.PobierzPlikNaDoc() : string;
var
openDlg : TOpenDialog;
begin
Result:='';
openDlg:=TOpenDialog.Create(self);
openDlg.Filter:='Dokumenty Microsoft Word (*.doc;*docx)|*.doc;*.docx';
if openDlg.Execute then begin
Result := IObsSzab.GetTempFullFileName( ExtractFileExt(openDlg.FileName) );
if not CopyFile(PChar(openDlg.FileName),PChar(Result),true) then begin
Result:='';
end;
end;
openDlg.Free;
end;
【问题讨论】:
-
"第一件事:复制后文件大小增加。"你真的确定会发生这种情况吗?
-
Windows
CopyFile函数不会将 Microsoft Word DOCX 文件转换为 DOC。它与 Microsoft Word 无关。