Страница 44 из 61

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 11:02
RaFaeL
Для имен файлов у меня вот так:

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

checkstr    string('\/:*?"<>|')

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

                      if match(lfile,'[\/:*?"<>|]',Match:Regular)
                        loop ch1#=1 to len(checkstr)
                          loop ch2#=1 to len(clip(lfile))
                            if lfile[ch2#]=checkstr[ch1#]
                              lfile[ch2#]='_'
                            end
                          end
                        end
                      end


libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 11:06
RaFaeL
В принципе можно ж в поставку вставить функцию strout=XSLX:Normalize(strin) это обертке не помешает. Давайте тогда оптимальный алгоритм )

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 12:52
Игорь Столяров
RaFaeL писал(а): 18 Февраль 2019, 11:06Давайте тогда оптимальный алгоритм
Ага ! Идея-то неплохая. ;)
Ваш алгоритм и есть оптимальный - у меня тоже самое, только я тупо перебираю строку всегда. :)

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 13:18
RaFaeL

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

    XLSX:Normalize(STRING In_,BYTE valchar_=95),STRING

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

XLSX:Normalize PROCEDURE(STRING In_,BYTE valchar_)

  CODE

   l#=len(In_)
   loop i#=1 to l#
     if instring(In_[i#],'/\[]:*?')
       In_[i#]=chr(valchar_)
     end
   end
   if l#>31
     return In_[1:31]
   end
   return In_

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 13:44
Игорь Столяров
RaFaeL писал(а): 18 Февраль 2019, 13:18XLSX:Normalize
Ура ! Спасибо ! :)
Уже можно смотреть обновление лучшей в мире библиотеки для экспорта в XLSX ? ;)

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 15:07
RaFaeL
Игорь Столяров писал(а): 18 Февраль 2019, 13:44Уже можно смотреть обновление лучшей в мире библиотеки для экспорта в XLSX ?
Готовую функцию то самостоятельно уж можно в код вставить, думаю

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 15:13
Губин Игорь
...

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 15:16
Дед Пахом
RaFaeL писал(а): 18 Февраль 2019, 13:18XLSX:Normalize PROCEDURE(STRING In_,BYTE valchar_)
Эффективнее проверку на >31 в цикл встроить, а то передадут строку размером в гиг, цикл её будет всю по символу перебирать.

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 15:28
Губин Игорь
Дед Пахом писал(а): 18 Февраль 2019, 15:16Эффективнее проверку на >31 в цикл встроить
Если автор не возражает

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

XLSX:Normalize PROCEDURE(STRING In_,BYTE valchar_)

  CODE

   l#=len(In_)
   if l# > 31 Then
     l# = 31
   end
   loop i#=1 to l#
     if instring(In_[i#],'/\[]:*?')
       In_[i#]=chr(valchar_)
     end
   end
   return In_[1:l#]

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 15:33
Губин Игорь
И ещё немного "защиты от дурака"

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

XLSX:Normalize PROCEDURE(STRING In_,BYTE valchar_)


  CODE

   l#=len(In_)
   if l# > 31
     l# = 31
   end
   if instring(chr(valchar_),'/\[]:*?') 
     valchar_ = 95
   end
   loop i#=1 to l#
     if instring(In_[i#],'/\[]:*?')
       In_[i#]=chr(valchar_)
     end
   end
   return In_[1:l#]

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 16:28
RaFaeL
ОК

libxlsxwriter for Clarion

Добавлено: 18 Февраль 2019, 17:00
Игорь Столяров
Ура ! Заработала ! Спасибо ! :)

По преданию, Рафаэль Санти (XVI век) сам делал копии своих знаменитых полотен с мадоннами и продавал
их за бесценок … просто, что бы другие живописцы в желании подзаработать не исказили настоящее искусство …

Колёса вертятся, но ничего не меняется. :idied:

libxlsxwriter for Clarion

Добавлено: 19 Февраль 2019, 11:06
Губин Игорь
Игорь Столяров писал(а): 18 Февраль 2019, 17:00По преданию, Рафаэль Санти (XVI век) сам делал копии своих знаменитых полотен с мадоннами и продавал
их за бесценок … просто, что бы другие живописцы в желании подзаработать не исказили настоящее искусство …

Я, в данной ситуации, предпочитаю считать себя реинкарнацией Хана Ван Мегина :cat:

libxlsxwriter for Clarion

Добавлено: 19 Февраль 2019, 11:32
Игорь Столяров
Сам такой - хочется нафигачить всего и побольше. :)

Что в общем-то и сделал: экспорт разделителей, чисел по формату, картинок вписанных в квадрат с отступами,
установка высоты строки для объединённых ячеек по длине текста и т.д.

Но есть тонкая грань - что действительно нужно в базовом классе, а что локальные надуманные доделки … ;)

libxlsxwriter for Clarion

Добавлено: 19 Февраль 2019, 14:08
finsoftrz
Кстати, а в последних версиях ms office файлики нормально читаются? Я полгода назад одному товарищу отправлял, у него вылезали разные сообщения об ошибках, хотя открыть он смог. При этом в опенах все открывалось без проблем. Какое там состояние на сегодня?