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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
Ветеран
Сообщения: 2866
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 24 Август 2018, 12:20

Некоторые несознательные пользователи случайно или неслучайно сохраняют "пустой текст" где есть только переводы строк. Их не видно после сохранения, кажется, что поле пустое. На уровне атрибута Req защиты нет. На уровне БД защиты тоже нет. Есть какие-нибудь стандартные решения? Чтобы велосипед не изобретать.
We are hard at work… for you. :)

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3517
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

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

Сообщение Игорь Столяров » 24 Август 2018, 12:54

На кнопку СОХРАНИТЬ повесить незамысловатый код ?

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

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

Аватара пользователя
finsoftrz
Ветеран
Сообщения: 808
Зарегистрирован: 06 Ноябрь 2014, 12:48

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

Сообщение finsoftrz » 24 Август 2018, 13:05

Такой проблемы не было. А так я использую общую библиотеку функций, в которую собираю все, что не связано со словарем. Написал процедуру/функцию один раз и используй в любом проекте как "часть языка".
Рязань решает.

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 711
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

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

Сообщение RaFaeL » 24 Август 2018, 13:06

А чем мешают эти символы и почему их не должно быть?

kreator
Ветеран
Сообщения: 2866
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 24 Август 2018, 15:33

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

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

XYZ:TextField = Clip(XYZ:TextField)

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

Получается, что кроме этих символов в поле ничего нет. И пользователи (а также их начальники) жалуются, что программа сохранила запись с пустым полем, хотя было строго указано, что это поле обязательное. А поскольку эти символы не видны, то и сказать даже "сам дурак" нельзя.
We are hard at work… for you. :)

Yufil
Ветеран движения
Сообщения: 1008
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

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

Сообщение Yufil » 24 Август 2018, 15:37

У меня так...

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

............................................
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 ('')

kreator
Ветеран
Сообщения: 2866
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 27 Август 2018, 10:15

Yufil писал(а):
24 Август 2018, 15:37
У меня так...
То, что надо. Осталось подумать куда это зашить.
We are hard at work… for you. :)

Ответить