如何绕过MSWord中的255 char限制使用OLE搜索和替换

LaB*_*cca 1 delphi replace ole ms-word

我正在使用(在Delphi win32应用程序中)OLE来执行Word文档中的搜索和替换.

用户准备一个带有一些文本标签的文件,将它们括在"{"和"}"中并保存文件.

就像是

亲爱的{NAME},

我想告诉你{WHAT_I_DID_LAST_WEEK}

当然NAME,WHAT_I_DID_LAST_WEEK数据库字段可以超过255.

所以现在通过使用搜索和替换OLE我得到一个STRING PARAMETER TOO LONG错误(似乎255是可用的最长字符串).

有没有一种简单的方法来摆脱这个问题?

我想到的一些自制解决方案是:

1)截断为255(好的;))可能在末尾附加"..."

2)对于需要替换超过255个字符的每个"标记",我可以先插入更多标记{WHAT_I_DID_LAST_WEEK_1}{WHAT_I_DID_LAST_WEEK_2}{WHAT_I_DID_LAST_WEEK_N},然后一次替换255个字符

(1)是一个快速的解决方案,至少用户没有收到错误,但当然不是很好

(2)可能会工作,但它是一种解决方法,我宁愿另一种解决方案.

可能是另一个解决方案是不使用OLE Serach&Replace但使用另一个功能.

Spe*_*rko 5

我们使用AWordApp.Selection.TypeText(strValue)和循环来替换值长度超过255个字符的标签...


 var
  AWordApp: OLEVariant;
 ...
 AWordApp := CreateOleObject('Word.Application');
 ...

if (Length(strValue) >  255) then
 begin
  bFound := AWordApp.Selection.Find.Execute(params...);
  while bFound do
   begin
    AWordApp.Selection.TypeText(strValue);
    bFound := AWordApp.Selection.Find.Execute(params...);
   end;
 end;

问候