libxlsxwriter for Clarion

Программы на Clarion, шаблоны, библиотеки и пр.

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение 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

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

libxlsxwriter for Clarion

Сообщение RaFaeL »

В принципе можно ж в поставку вставить функцию strout=XSLX:Normalize(strin) это обертке не помешает. Давайте тогда оптимальный алгоритм )
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

RaFaeL писал(а): 18 Февраль 2019, 11:06Давайте тогда оптимальный алгоритм
Ага ! Идея-то неплохая. ;)
Ваш алгоритм и есть оптимальный - у меня тоже самое, только я тупо перебираю строку всегда. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение 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_
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

RaFaeL писал(а): 18 Февраль 2019, 13:18XLSX:Normalize
Ура ! Спасибо ! :)
Уже можно смотреть обновление лучшей в мире библиотеки для экспорта в XLSX ? ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Игорь Столяров писал(а): 18 Февраль 2019, 13:44Уже можно смотреть обновление лучшей в мире библиотеки для экспорта в XLSX ?
Готовую функцию то самостоятельно уж можно в код вставить, думаю
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

libxlsxwriter for Clarion

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

...
Последний раз редактировалось Губин Игорь 19 Февраль 2019, 12:18, всего редактировалось 1 раз.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение Дед Пахом »

RaFaeL писал(а): 18 Февраль 2019, 13:18XLSX:Normalize PROCEDURE(STRING In_,BYTE valchar_)
Эффективнее проверку на >31 в цикл встроить, а то передадут строку размером в гиг, цикл её будет всю по символу перебирать.
С уважением, ДП
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

libxlsxwriter for Clarion

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

Дед Пахом писал(а): 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#]
Последний раз редактировалось Губин Игорь 19 Февраль 2019, 11:02, всего редактировалось 1 раз.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

libxlsxwriter for Clarion

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

И ещё немного "защиты от дурака"

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

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#]
Последний раз редактировалось Губин Игорь 19 Февраль 2019, 11:01, всего редактировалось 1 раз.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

ОК
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

Ура ! Заработала ! Спасибо ! :)

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

Колёса вертятся, но ничего не меняется. :idied:
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

libxlsxwriter for Clarion

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

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

Я, в данной ситуации, предпочитаю считать себя реинкарнацией Хана Ван Мегина :cat:
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libxlsxwriter for Clarion

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

Сам такой - хочется нафигачить всего и побольше. :)

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

Но есть тонкая грань - что действительно нужно в базовом классе, а что локальные надуманные доделки … ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

libxlsxwriter for Clarion

Сообщение finsoftrz »

Кстати, а в последних версиях ms office файлики нормально читаются? Я полгода назад одному товарищу отправлял, у него вылезали разные сообщения об ошибках, хотя открыть он смог. При этом в опенах все открывалось без проблем. Какое там состояние на сегодня?
C6/C11, ШВС, tps/btrieve.
Ответить