clip в report не убирает пробелы

Clarion, Clarion 7

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

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

clip в report не убирает пробелы

Сообщение kreator »

talgat55 писал(а): 15 Апрель 2024, 11:40 а операторы долбят на enter и в начале текста и в конце...
Это ещё ладно. У меня был такой случай. В форме поле типа TEXT с атрибутом REQ. Некий "продвинутый" пользователь несколько раз нажимает ENTER на этом поле. И сохраняет данные. Естественно потом вопросы. В поле вроде бы ничего нет, а запись есть. Пришлось делать ручной костыль. Хорошего решения не нашёл. Вроде хотелось чтобы где-то внутри была опция типа "невидимые символы считать за пусто". :)
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 51 раз

clip в report не убирает пробелы

Сообщение Игорь Столяров »

kreator писал(а): 15 Апрель 2024, 19:32 Хорошего решения не нашёл.
У нас есть вот такая древняя функция. :)

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

! Убрать нажатие педали (до 30) в TEXT: GetStrDA(TextField)

GetStrDA             PROCEDURE  (*? ISTR_)   
Loc:Pos              LONG(0)
  Code
  If Len(Clip(ISTR_)) > 1

     Loop 30 times
       Loc:Pos = InString(Chr(13) & Chr(10),Clip(ISTR_),1,1)

       If Loc:Pos = 0 then Break
       elsIf Len(Clip(ISTR_)) = 2  ! Строка <13,10>
          ISTR_ = ''
          Break
       elsIf Loc:Pos = 1
          ISTR_ = Clip(Sub(ISTR_,3,Len(Clip(ISTR_)) - 2))
       else
          ISTR_ = Sub(ISTR_,1,Loc:Pos - 1) & ' ' & Sub(ISTR_,Loc:Pos + 2,Len(Clip(ISTR_)))
       end
     end
  end

  ISTR_ = Clip(ISTR_)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 5037
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 23 раза

clip в report не убирает пробелы

Сообщение kreator »

Понятно. Руками перебирать символы. Хотелось бы универсальной функции и ещё зашитой в недра языка. Ваша функция проверяет только на перевод строки. А ещё есть куча невидимых символов, например, TAB.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 51 раз

clip в report не убирает пробелы

Сообщение Игорь Столяров »

Понимаете в чём проблема ... здесь не может быть универсальной (и тем более зашитой) функции.
Это мы сами решили, что давить педаль (или TAB) это плохо. На самом деле нет - просто тупь, но не ошибка.

У нас есть более "мощные" функции нормализации строк для того же XML или при вставки копипастом их XLSX ...
но это уже совсем другая история про Пяточка и Кролика :)
kreator писал(а): 15 Апрель 2024, 21:48 Руками перебирать символы.
Вообще-то нет никакого перебора. INSTRING() - это поиск. Один отрицательный ответ поиска и на выход ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2368
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 19 раз

clip в report не убирает пробелы

Сообщение Губин Игорь »

talgat55 писал(а): 14 Апрель 2024, 17:38 кажется причину понял. Для ввода этой переменной в форме я тоже пользую тулбар text
Оператор вносит вначале не пробел а нажимает несколько раз ввод и похоже записывается символ перевод каретки а не пробел
clip его не удаляет. А как убрать ?
Элементарно. Проверять в цикле первые два символа на совпадение с <13><10> и сдвигать всё влево на две позиции. С конечными чуть муторней, но аналогично.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
morkovin
Ветеран
Сообщения: 910
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

clip в report не убирает пробелы

Сообщение morkovin »

Элементарно. Проверять в цикле первые два символа на совпадение с <13><10> и сдвигать всё влево на две позиции. С конечными чуть муторней, но аналогично.
У меня была такая заморочка с юзерами - пытались форматировать в TEXT-поле. Сделал кнопку ПОКАЗАТЬ НЕВИДИМЫЕ СИМВОЛЫ (кроме пробела) и объяснил, что программа автоматом делает переносы и пр. в очетах, в противном случае будут всё перебивать сами.
WBR, morkovin
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 51 раз

clip в report не убирает пробелы

Сообщение Игорь Столяров »

morkovin писал(а): 16 Апрель 2024, 9:02 Сделал кнопку ПОКАЗАТЬ НЕВИДИМЫЕ СИМВОЛЫ
Вы же назвали её: "ВСЕМ ВЫЙТИ ИЗ СУМРАКА !" ?
Ну пожалуйста ... :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4742
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 38 раз

clip в report не убирает пробелы

Сообщение finsoftrz »

Такое еще может быть при копировании из офисных пакетов или интернета.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2368
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 19 раз

clip в report не убирает пробелы

Сообщение Губин Игорь »

finsoftrz писал(а): 16 Апрель 2024, 10:05 Такое еще может быть при копировании из офисных пакетов или интернета.
Про копирование из интернета помолчим... :facepalm: Буквы спецсимволами это что-то :dizzy:
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2368
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 19 раз

clip в report не убирает пробелы

Сообщение Губин Игорь »

Если честно, то у меня в классе есть стандартная процедура "очистки" текста от всякой лабуды. Написал один раз - пользуешься всегда. Вырезать очень сложно, т.к. она полностью интегрирована в класс и содержит кучу настроек и таблиц для разных вариантов. Но суть примитивная - находим символ/сочетание символов и удаляем/подменяем/сдвигаем
Это я только кажусь дураком! На самом деле я полный идиот!
kreator
✯ Ветеран ✯
Сообщения: 5037
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 23 раза

clip в report не убирает пробелы

Сообщение kreator »

Игорь Столяров писал(а): 15 Апрель 2024, 21:55 Понимаете в чём проблема ... здесь не может быть универсальной (и тем более зашитой) функции.
Это мы сами решили, что давить педаль (или TAB) это плохо. На самом деле нет - просто тупь, но не ошибка.
Я полностью с Вами согласен. Не надо исправлять эту "тупь". А может это сделано пользователем специально. Например для выравнивания текста по вертикали в каком-нибудь бланке. Я так понимаю приведённая Вами функция удаляет перевод строки в начале, в остальных местах переделывает в пробел. На мой взгляд это чересчур. Нормальному пользователю это может сильно не понравиться.
"Универсальность" меня бы устроила для преобразования "пустого" текста. Сейчас нет стандартного механизма ни на клиенте ни на сервере решить этот вопрос. На мой взгляд нехорошо когда есть поле с требованием обязательности, а в нём присутствуют только невидимые символы. Как вариант - отображать их значками. Но это тоже нестандарт.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 51 раз

clip в report не убирает пробелы

Сообщение Игорь Столяров »

kreator писал(а): 16 Апрель 2024, 16:07 в остальных местах переделывает в пробел. На мой взгляд это чересчур.
Как я уже говорил - любое решение здесь будет специфично и неполно.
Приведённый мною простой пример хорошо работает на многострочных полях, когда пользователь
давит педаль для перехода на новую строку в поле (сейчас ENTER на таких полях вообще забанили).
Ну или при вставке с мусором из Word / Excel через ClipBoard.

Но конечно здесь не рашаются все вопросы. Некоторые исхитряются ставить дефис для переноса строк.
Начинаешь обрабатывать дефис в конце строки перед переносом и склеивать слова - появляются что-то вроде:

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

А фамилия моя Бендер-
Задунайский, сказал Остап
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 5037
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 23 раза

clip в report не убирает пробелы

Сообщение kreator »

У нас есть места, где пользователи пишут много (фактически инструкции). Даже делают так - В Ворде всё набирают, немного форматируют, проверяют орфографию, пунктуацию и потом копипастом загоняют в поле. Ну никак нельзя автоматом исправлять их сочинения. :D
Кстати, Вашу функцию можно оптимизировать. Каждый раз instring с первого поля не долго? Да и тридцать раз зачем? Можно бесконечный цикл. Всё равно выход по break.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7499
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 51 раз

clip в report не убирает пробелы

Сообщение Игорь Столяров »

kreator писал(а): 18 Апрель 2024, 21:46 Каждый раз instring с первого поля не долго?
Так это же думать тогда надо ... ;)
kreator писал(а): 18 Апрель 2024, 21:46 Да и тридцать раз зачем? Можно бесконечный цикл. Всё равно выход по break.
А вот это уже опыт, сын ошибок трудных. План Б для выхода должен быть всегда ... :)
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить