MSWord版本的OLE检查的机器相关结果

时间:2013-05-31 15:12:30

标签: delphi ms-word delphi-xe2 ole

使用此代码检索已安装的MS Word的版本:

uses uses oleauto;

[...]

function TForm2.GetWordVersion:string;
const
  wdDoNotSaveChanges = 0;
var
  WordApp: OLEVariant;
  WordVersion: variant;
begin
  Try
      WordApp := CreateOLEObject('Word.Application');
      WordVersion := WordApp.version;
      WordApp.Quit(wdDoNotSaveChanges);
  except
    on E: Exception do
    begin
      WordVersion := -1;
    end;

  End;
  Result :=  wordversion;
end;

我的机器上有140,我的同事得到14.这两个都是win7 / Word2010,但我在意大利,他在印度。

有人知道这个吗?

为什么不同的价值观?

由于

1 个答案:

答案 0 :(得分:2)

我猜这是一个小数分隔符问题。 Word返回字符串'14 .0',然后当您转换为整数时,句点在一台机器上被视为位置分隔符,在另一台机器上被视为小数分隔符。

解决方案是停止转换为整数,我推断你正在使用未显示的代码。

我从这个评论中推断出来:

  

我可以将它转换为字符串并使用前2个字符。

由于问题中的代码对字符串进行操作,因此我得出结论,问题中未显示的其他代码正在转换为整数。