Страница 44 из 61
libxlsxwriter for Clarion
Добавлено: 18 Февраль 2019, 11:02
RaFaeL
Для имен файлов у меня вот так:
Код: Выделить всё
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 век) сам делал копии своих знаменитых полотен с мадоннами и продавал
их за бесценок … просто, что бы другие живописцы в желании подзаработать не исказили настоящее искусство …
Колёса вертятся, но ничего не меняется.
libxlsxwriter for Clarion
Добавлено: 19 Февраль 2019, 11:06
Губин Игорь
Игорь Столяров писал(а): ↑18 Февраль 2019, 17:00По преданию, Рафаэль Санти (XVI век) сам делал копии своих знаменитых полотен с мадоннами и продавал
их за бесценок … просто, что бы другие живописцы в желании подзаработать не исказили настоящее искусство …
Я, в данной ситуации, предпочитаю считать себя реинкарнацией Хана Ван Мегина
libxlsxwriter for Clarion
Добавлено: 19 Февраль 2019, 11:32
Игорь Столяров
Сам такой - хочется нафигачить всего и побольше.
Что в общем-то и сделал: экспорт разделителей, чисел по формату, картинок вписанных в квадрат с отступами,
установка высоты строки для объединённых ячеек по длине текста и т.д.
Но есть тонкая грань - что действительно нужно в базовом классе, а что локальные надуманные доделки …
libxlsxwriter for Clarion
Добавлено: 19 Февраль 2019, 14:08
finsoftrz
Кстати, а в последних версиях ms office файлики нормально читаются? Я полгода назад одному товарищу отправлял, у него вылезали разные сообщения об ошибках, хотя открыть он смог. При этом в опенах все открывалось без проблем. Какое там состояние на сегодня?