Страница 1 из 1

В поле текст только переводы строк. Как защитититься?

Добавлено: 24 Август 2018, 12:20
kreator
Некоторые несознательные пользователи случайно или неслучайно сохраняют "пустой текст" где есть только переводы строк. Их не видно после сохранения, кажется, что поле пустое. На уровне атрибута Req защиты нет. На уровне БД защиты тоже нет. Есть какие-нибудь стандартные решения? Чтобы велосипед не изобретать.

В поле текст только переводы строк. Как защитититься?

Добавлено: 24 Август 2018, 12:54
Игорь Столяров
На кнопку СОХРАНИТЬ повесить незамысловатый код ?

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

  XYZ:TextField = Clip(XYZ:TextField)
Ну или написать функцию, которая в цикле будет убирать из строки завершающие символы <13,10> ...

В поле текст только переводы строк. Как защитититься?

Добавлено: 24 Август 2018, 13:05
finsoftrz
Такой проблемы не было. А так я использую общую библиотеку функций, в которую собираю все, что не связано со словарем. Написал процедуру/функцию один раз и используй в любом проекте как "часть языка".

В поле текст только переводы строк. Как защитититься?

Добавлено: 24 Август 2018, 13:06
RaFaeL
А чем мешают эти символы и почему их не должно быть?

В поле текст только переводы строк. Как защитититься?

Добавлено: 24 Август 2018, 15:33
kreator
Игорь Столяров писал(а): 24 Август 2018, 12:54 На кнопку СОХРАНИТЬ повесить незамысловатый код ?

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

XYZ:TextField = Clip(XYZ:TextField)

Ну или написать функцию, которая в цикле будет убирать из строки завершающие символы <13,10> ...
Clip не убирает коды 13 и 10. Толку от clip никакого. Можно функцию написать. Но некрасиво. Как временно решение сгодится, для защиты от конкретного пользователя (сколько лет работаю, первый раз с таким сталкиваюсь). Но хотелось бы универсальное решение. Что-нибудь зашить в классы, например в момент валидации полей, при проверке на атрибут Req.
RaFaeL писал(а): 24 Август 2018, 13:06 А чем мешают эти символы и почему их не должно быть?

Получается, что кроме этих символов в поле ничего нет. И пользователи (а также их начальники) жалуются, что программа сохранила запись с пустым полем, хотя было строго указано, что это поле обязательное. А поскольку эти символы не видны, то и сказать даже "сам дурак" нельзя.

В поле текст только переводы строк. Как защитититься?

Добавлено: 24 Август 2018, 15:37
Yufil
У меня так...

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

............................................
Clips                 PROCEDURE(String),String          ! Отрубание хвоста строки 
............................................
CLIPS                PROCEDURE  (LOC:S)                    ! Declare Procedure
I  Long
J  Long

  CODE
        J=LEN(LOC:S)
        LOOP I=J TO 1 BY -1
         IF ~INList(LOC:S[I],' ','<9>','<13>','<10>')
            RETURN LOC:S[1:I]
         END
        END
        RETURN ('')

В поле текст только переводы строк. Как защитититься?

Добавлено: 27 Август 2018, 10:15
kreator
Yufil писал(а): 24 Август 2018, 15:37У меня так...
То, что надо. Осталось подумать куда это зашить.