0

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

有人知道吗?

为什么价值观不同?

谢谢

4

1 回答 1

2

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

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

我从这个评论中推断:

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

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

于 2013-05-31T15:21:09.273 回答