我正在使用Delphi XE2,并使用以下代码在Word(2010)模板的书签中输入字母Y。
Doc.Bookmarks.Item('NS').Range.InsertAfter('Y');
除文档中以外,出现数字89代替字母Y。
是我的代码还是Word文档中的错误?任何方向表示感谢。
最佳答案
您的文字'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()
接收一个变体参数,因此您确实需要注意存储在该变体中的有效载荷的类型。