powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 10.2 - слишком длинный строковый параметр
5 сообщений из 5, страница 1 из 1
Delphi 10.2 - слишком длинный строковый параметр
    #39833602
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем здрасте,
Есть dll , которая находит текст в MSWord , и вставляет вместо него свой (работало все – на ура).
Но с некоторых пор

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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;


На строке

Код: pascal
1.
TypeDos_Templs.Selection.Find.Replacement.Text := APasteText;


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

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

Ранее было
Код: pascal
1.
APasteText: string



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

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

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

Код: pascal
1.
2.
3.
function FindAndPasteTextDoc(AFindText, APasteText: widestring;
                               AUnderLine, ABold, AItalic, ACountReplace: integer;
                               AColor: olevariant):boolean; far; external 'SPF';
...
Рейтинг: 0 / 0
Delphi 10.2 - слишком длинный строковый параметр
    #39833605
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно конечно " APasteText " сразу проверять на длину и если она больше чем 255 символов, то разбивать ее на часли например по 250 символов, и вставлять частями, конечно у каждой части (кроме последней) в конце дложна быть метка, по которой можно будет ее находить для вставки следующей части.

Но как-то громоздко это...
...
Рейтинг: 0 / 0
Delphi 10.2 - слишком длинный строковый параметр
    #39833606
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Delphi 10.2 - слишком длинный строковый параметр
    #39833655
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот не поскажите, вот кусок:

Код: pascal
1.
2.
3.
4.
5.
6.
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 символов)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 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 ...' всеравно в начале документа.
...
Рейтинг: 0 / 0
Delphi 10.2 - слишком длинный строковый параметр
    #39833659
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, разобрался.

Код: pascal
1.
TypeDos_Templs.Selection.TypeText...



нужно после 'Execute' ставить
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 10.2 - слишком длинный строковый параметр
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]