Delphi 10.2 - слишком длинный строковый параметр

Kos-2010
Дата: 04.07.2019 01:05:55
Всем здрасте,
Есть dll, которая находит текст в MSWord, и вставляет вместо него свой (работало все – на ура).
Но с некоторых пор

function FindAndPasteTextDoc(AFindText, APasteText: widestring;
                             AUnderLine, ABold, AItalic, ACountReplace: integer;
                             AColor: olevariant):boolean; export;
begin
  StartOfDoc;
showmessage('');
  FindAndPasteTextDoc := true;
  try
    TypeDos_Templs.Selection.Find.Text := AFindText;
    TypeDos_Templs.Selection.Find.Replacement.Text := APasteText;
    TypeDos_Templs.Selection.Find.Forward := True; 
…
if ACountReplace = 1 then
      TypeDos_Templs.Selection.Find.Execute(Replace := wdReplaceOne)
    else TypeDos_Templs.Selection.Find.Execute(Replace := wdReplaceAll);
  except
    FindAndPasteTextDoc := false;

На строке

TypeDos_Templs.Selection.Find.Replacement.Text := APasteText;

Если «APasteText» длиной более 255 символов ошибка

… exception class EOleException with message 'Слишком длинный строковый параметр'.

Ранее было
APasteText: string


Но как видно «widestring» тоже не слишком помог

Как исправить ошибку?
Заране спасибо за ответ.

P.S.
Вызов функции:

function FindAndPasteTextDoc(AFindText, APasteText: widestring;
                               AUnderLine, ABold, AItalic, ACountReplace: integer;
                               AColor: olevariant):boolean; far; external 'SPF';
Kos-2010
Дата: 04.07.2019 01:45:46
можно конечно "APasteText" сразу проверять на длину и если она больше чем 255 символов, то разбивать ее на часли например по 250 символов, и вставлять частями, конечно у каждой части (кроме последней) в конце дложна быть метка, по которой можно будет ее находить для вставки следующей части.

Но как-то громоздко это...
Relic Hunter
Дата: 04.07.2019 01:50:02
Kos-2010
Дата: 04.07.2019 09:16:26
А вот не поскажите, вот кусок:

TypeDos_Templs.Selection.Find.Text := '&&color_words$$';
    TypeDos_Templs.Selection.Find.Replacement.Text := '1111111111111111';
    TypeDos_Templs.Selection.Find.Forward := True;
    TypeDos_Templs.Selection.Find.Wrap := wdFindContinue;
    TypeDos_Templs.Selection.Find.Format := true;
    TypeDos_Templs.Selection.Find.Execute(Replace := wdReplaceOne);

работает, т.е. заменяет '&&color_words$$' на '1111111111111111'.
А вот когда пытаюсь использовать TypeText (у меня строка более 255 символов)

 TypeDos_Templs.Selection.Find.Text := '&&color_words$$';
    TypeDos_Templs.Options.ReplaceSelection := true;

    TypeDos_Templs.Selection.TypeText('БОЛЕЕ 255 СИМВОЛОВ проверка соответствия электрической прочности диэлектрических бот '
                                      +' диэлектрических перчаток и инструментов с диэлектрическими рукоятками требованиям "Инструкция по применению и испытанию средств защиты '
                                      +' используемых в электроустановках СО 153-34.03.603-2003" (дальше СО) '
                                      +'БОЛЕЕ 255 СИМВОЛОВ проверка соответствия электрической прочности диэлектрических бот '
                                      +' диэлектрических перчаток и инструментов с диэлектрическими рукоятками требованиям "Инструкция по применению и испытанию средств защиты '
                                      +' используемых в электроустановках СО 153-34.03.603-2003" (дальше');

    TypeDos_Templs.Selection.Find.Forward := True;
    TypeDos_Templs.Selection.Find.Wrap := wdFindContinue;
    TypeDos_Templs.Selection.Find.Format := true;
   TypeDos_Templs.Selection.Find.Execute(Replace := wdReplaceOne);


программа находит '&&color_words$$' - удаляет это словосочетание, но вставляет в мой кусок в 'TypeText ...' всеравно в начале документа.
Kos-2010
Дата: 04.07.2019 09:23:48
спасибо, разобрался.

TypeDos_Templs.Selection.TypeText...


нужно после 'Execute' ставить