【问题标题】:Entering Text From Delphi To Word将文本从 Delphi 输入到 Word
【发布时间】:2012-12-10 10:05:19
【问题描述】:

我正在使用 Delphi XE2,并使用以下代码将字母 Y 输入到 Word (2010) 模板的书签中。

Doc.Bookmarks.Item('NS').Range.InsertAfter('Y');

除了在文档中,出现数字 89 而不是字母 Y。

错误可能来自我的代码还是 Word 文档?感激地收到任何指示。

【问题讨论】:

  • 在书签后面手动添加字符会怎样?

标签: delphi ms-word delphi-xe2


【解决方案1】:

您的文字 'Y' 是字符文字而不是字符串文字。 ASCII code for Y is 89

因此,您传递的是 Char 而不是 string。当 Word 需要获取该整数的字符串表示形式时,它只需将整数 89 转换为其文本表示形式,即字符串 '89'

要解决这个问题,您可以这样做:

var
  Text: string;
....
Text := 'Y';
Doc.Bookmarks.Item('NS').Range.InsertAfter(Text);

我们的想法是确保将字符串传递给InsertAfter(),而不是字符。请记住,InsertAfter() 接收一个变体参数,因此您需要注意存储在变体中的有效负载的类型。

【讨论】:

  • 字符串类型转换也可以工作:InsertAfter(string('Y')).
  • 是的,这也可以。我最初的答案是这样,但出于说明的目的,我更喜欢这个更明确的版本。
  • 嗯。让你好奇。如果我创建一个procedure X(V: OleVariant);,那么无论我使用常量、强制转换还是字符串变量作为输入,VarType(V) 都会始终返回 8 (varOleStr)。
  • 这样一来就解决了,非常感谢!我是新来的男孩,所以有什么礼貌的行为可以做 - 任何功劳之类的吗?
  • 支持好的答案并接受最好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多