Последняя версия DataExpress 3 beta от 9 августа 2020 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Расширения
ИзображениеИзображениеИзображение

Очистка текста

Вопросы, касающиеся языка, синтаксиса.
capsmolet
Интересующийся
Сообщения: 112
Зарегистрирован: Пт сен 20, 2019 7:26 pm
Благодарил (а): 24 раза
Поблагодарили: 12 раз

Очистка текста

Сообщение capsmolet » Чт июн 18, 2020 3:59 pm

Решил написать код, по оформлению все вроде прочитал.
Не пойму в чем ошибка.
В программировании я не мастер.
efzn_functions: [Error] (111:151): 'BEGIN' expected

Код: Выделить всё

{@module
Author=A.N.Efremov
Version=1.00
Description=Пользовательские функции<br><br>
<b>EFZN_DELPUNCT</b> - удаление символов пунктуации, кавычек и т.д.
@}

{@function
OrigName=EFZN_DELPUNCT
Name=EFZN_DELPUNCT
Args=ss
Result=s
Group=EFZN Functions
Description=Удаление символов пунктуации, кавычек и т.д. (! ? / \ | - _ @ # % ^ & * " : ; , ` ~ + = $ ( ) [ ] { } < > ')<br>
<b>Параметр 1:</b> Текст <br><br>
<b>Параметр 2:</b> Текст, которым заменяем в кавычках<br><br>
<b>Возвращаемое значение:</b> Текст <br><br>
<b>Примеры:</b><br>
<code>EFZN_DELPUNCT('Текст', 'Чем заменяем')</code><br>
<code>EFZN_DELPUNCT([Текст_поле], 'Чем заменяем')</code>
@}

function efzn_replace(const v_Text, v_OldText, v_NewText: string): string;
begin
 result := StringReplace(v_Text, v_OldText, v_NewText, [rfReplaceAll]);
end;

function EFZN_DELPUNCT(const Str, StrRepl: string): string;
var
   v_String, v_StringRepl: string;
begin
  result := '';
  v_String := Str;
  v_StringRepl := StrRepl;
  //
  v_String := efzn_replace(v_String, '!', v_StringRepl);
  v_String := efzn_replace(v_String, '?', v_StringRepl);
  v_String := efzn_replace(v_String, '/', v_StringRepl);
  v_String := efzn_replace(v_String, '\', v_StringRepl);
  v_String := efzn_replace(v_String, '-', v_StringRepl);
  v_String := efzn_replace(v_String, '_', v_StringRepl);
  v_String := efzn_replace(v_String, '@', v_StringRepl);
  v_String := efzn_replace(v_String, '#', v_StringRepl);
  v_String := efzn_replace(v_String, '%', v_StringRepl);
  v_String := efzn_replace(v_String, '^', v_StringRepl);
  v_String := efzn_replace(v_String, '&', v_StringRepl);
  v_String := efzn_replace(v_String, '*', v_StringRepl);
  v_String := efzn_replace(v_String, '"', v_StringRepl);
  v_String := efzn_replace(v_String, ':', v_StringRepl);
  v_String := efzn_replace(v_String, ';', v_StringRepl);
  v_String := efzn_replace(v_String, '`', v_StringRepl);
  v_String := efzn_replace(v_String, '~', v_StringRepl);
  v_String := efzn_replace(v_String, '«', v_StringRepl);
  v_String := efzn_replace(v_String, '»', v_StringRepl);
  v_String := efzn_replace(v_String, '…', v_StringRepl);
  v_String := efzn_replace(v_String, '—', v_StringRepl);
  v_String := efzn_replace(v_String, '+', v_StringRepl);
  v_String := efzn_replace(v_String, '=', v_StringRepl);
  v_String := efzn_replace(v_String, '|', v_StringRepl);
  v_String := efzn_replace(v_String, '$', v_StringRepl);
  v_String := efzn_replace(v_String, '(', v_StringRepl);
  v_String := efzn_replace(v_String, ')', v_StringRepl);
  v_String := efzn_replace(v_String, '[', v_StringRepl);
  v_String := efzn_replace(v_String, ']', v_StringRepl);
  v_String := efzn_replace(v_String, '{', v_StringRepl);
  v_String := efzn_replace(v_String, '}', v_StringRepl);
  v_String := efzn_replace(v_String, ',', v_StringRepl);
  v_String := efzn_replace(v_String, '<', v_StringRepl);
  v_String := efzn_replace(v_String, '>', v_StringRepl);
  v_String := efzn_replace(v_String, "'", v_StringRepl);
  result := v_String;
end;

Аватара пользователя
admin
Разработчик
Сообщения: 5045
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 39 раз
Поблагодарили: 308 раз

Очистка текста

Сообщение admin » Чт июн 18, 2020 4:58 pm

В description символ } указан - вообще этот символ закрывает комментарии в коде, используйте html-код &#125;.
Также идет следом синтаксическая ошибка в строке 70. Если в тексте надо указать апостроф, то он экранируется дублированием: ''. В случае если текст представляет собой единственный символ, то так: ''''. Или просто можно указать код символа: #39.

capsmolet
Интересующийся
Сообщения: 112
Зарегистрирован: Пт сен 20, 2019 7:26 pm
Благодарил (а): 24 раза
Поблагодарили: 12 раз

Очистка текста

Сообщение capsmolet » Чт июн 18, 2020 5:46 pm

admin писал(а):В description символ } указан - вообще этот символ закрывает комментарии в коде, используйте html-код &#125;.
Также идет следом синтаксическая ошибка в строке 70. Если в тексте надо указать апостроф, то он экранируется дублированием: ''. В случае если текст представляет собой единственный символ, то так: ''''. Или просто можно указать код символа: #39.

Спасибо Вам большое! Все получилось!
Не программист я, а уж Паскаль и в глаза не видел, поэтому и ценен Ваш конструктор!

capsmolet
Интересующийся
Сообщения: 112
Зарегистрирован: Пт сен 20, 2019 7:26 pm
Благодарил (а): 24 раза
Поблагодарили: 12 раз

Очистка текста

Сообщение capsmolet » Чт июн 18, 2020 6:01 pm

Благодаря автору DX теперь все правильно работает.
Прилагаю код, возможно кому-нибудь еще пригодится.
В будущем возможно еще что-нибудь будет.
Еще раз большое спасибо!

Удаление символов пунктуации, кавычек и т.д.

Код: Выделить всё

{@module
Author=A.N.Efremov
Version=1.00
Description=Пользовательские функции различного назначения<br><br>
<b>EFZN_DELPUNCT</b> - удаление символов пунктуации, кавычек и т.д.
@}

{@function
OrigName=EFZN_DELPUNCT
Name=EFZN_DELPUNCT
Args=ss
Result=s
Group=EFZN Functions
Description=Удаление символов пунктуации, кавычек и т.д. (! ? / \ | - _ @ # % ^ & * " : ; , ` ~ + = $ ( ) [ ] { &#125; < > ')<br>
<b>Параметр 1:</b> Текст <br>
<b>Параметр 2:</b> Текст, которым заменяем в кавычках<br><br>
<b>Возвращаемое значение:</b> Текст <br><br>
<b>Примеры:</b><br>
<code>EFZN_DELPUNCT('Текст', 'Чем заменяем')</code><br>
<code>EFZN_DELPUNCT([Текст_поле], 'Чем заменяем')</code>
@}

function efzn_replace(const v_Text, v_OldText, v_NewText: string): string;
begin
 result := StringReplace(v_Text, v_OldText, v_NewText, [rfReplaceAll]);
end;

function EFZN_DELPUNCT(const Str, StrRepl: string): string;
var
   v_String, v_StringRepl: string;
begin
  result := '';
  v_String := Str;
  v_StringRepl := StrRepl;
  //
  v_String := efzn_replace(v_String, '!', v_StringRepl);
  v_String := efzn_replace(v_String, '?', v_StringRepl);
  v_String := efzn_replace(v_String, '/', v_StringRepl);
  v_String := efzn_replace(v_String, '\', v_StringRepl);
  v_String := efzn_replace(v_String, '-', v_StringRepl);
  v_String := efzn_replace(v_String, '_', v_StringRepl);
  v_String := efzn_replace(v_String, '@', v_StringRepl);
  v_String := efzn_replace(v_String, '#', v_StringRepl);
  v_String := efzn_replace(v_String, '%', v_StringRepl);
  v_String := efzn_replace(v_String, '^', v_StringRepl);
  v_String := efzn_replace(v_String, '&', v_StringRepl);
  v_String := efzn_replace(v_String, '*', v_StringRepl);
  v_String := efzn_replace(v_String, '"', v_StringRepl);
  v_String := efzn_replace(v_String, ':', v_StringRepl);
  v_String := efzn_replace(v_String, ';', v_StringRepl);
  v_String := efzn_replace(v_String, '`', v_StringRepl);
  v_String := efzn_replace(v_String, '~', v_StringRepl);
  v_String := efzn_replace(v_String, '«', v_StringRepl);
  v_String := efzn_replace(v_String, '»', v_StringRepl);
  v_String := efzn_replace(v_String, '…', v_StringRepl);
  v_String := efzn_replace(v_String, '—', v_StringRepl);
  v_String := efzn_replace(v_String, '+', v_StringRepl);
  v_String := efzn_replace(v_String, '=', v_StringRepl);
  v_String := efzn_replace(v_String, '|', v_StringRepl);
  v_String := efzn_replace(v_String, '$', v_StringRepl);
  v_String := efzn_replace(v_String, '(', v_StringRepl);
  v_String := efzn_replace(v_String, ')', v_StringRepl);
  v_String := efzn_replace(v_String, '[', v_StringRepl);
  v_String := efzn_replace(v_String, ']', v_StringRepl);
  v_String := efzn_replace(v_String, '{', v_StringRepl);
  v_String := efzn_replace(v_String, '}', v_StringRepl);
  v_String := efzn_replace(v_String, ',', v_StringRepl);
  v_String := efzn_replace(v_String, '<', v_StringRepl);
  v_String := efzn_replace(v_String, '>', v_StringRepl);
  v_String := efzn_replace(v_String, '#39', v_StringRepl);
  result := v_String;
end;


Чтобы и пробелы захватить делаем так

Код: Выделить всё

EFZN_DELPUNCT(REPLACEALL([Этап проекта|Наименование этапа], " ", ""), "")


Вернуться в «Язык программирования RemObject Pascal Script.»