我正在使用(在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但是使用另一个函数。
答案 0 :(得分: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;
问候