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

Delphi MSWord版本OLE检查的机器相关结果,delphi,ms-word,delphi-xe2,ole,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'); WordVer

使用此代码检索已安装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,但我在意大利,他在印度

有人知道这件事吗

为什么有不同的价值观


谢谢

我猜这是小数点分隔符的问题。Word返回字符串“14.0”,然后当您转换为整数时,句点在一台计算机上被视为位置分隔符,在另一台计算机上被视为十进制分隔符

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

我从这一评论中推断:

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


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

如果唯一的可能性是140和14,我可以将其转换为字符串并使用前2个字符。为什么不直接从注册表读取它?为什么要运行WinWord.exe这样繁重的操作?非常感谢,事实上它是“14.0”。