gpt4 book ai didi

delphi - 如何使用 OLE 绕过 MS Word 搜索替换中的 255 个字符限制

转载 作者:行者123 更新时间:2023-12-02 01:45:26 25 4
gpt4 key购买 nike

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

用户准备一个文件,其中包含一些文本标记,将它们括在“{”和“}”中,然后保存该文件。

类似于

Dear {NAME},

I want to tell you {WHAT_I_DID_LAST_WEEK}

当然,NAMEWHAT_I_DID_LAST_WEEK 是长度可能超过 255 的数据库字段。

现在,通过使用“搜索”并用 OLE 替换,我收到“字符串参数太长”错误(似乎 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 而是使用其他函数。

最佳答案

我们使用 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;

问候

关于delphi - 如何使用 OLE 绕过 MS Word 搜索替换中的 255 个字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6788146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com