libxlsxwriter for Clarion

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

libxlsxwriter for Clarion

Сообщение RaFaeL » 24 Февраль 2018, 22:52

Если есть другие параметры формата, то сработает через очистку картинки. В примере проблема в том, что формат получается пустой

Аватара пользователя
vic7tar
Активист
Сообщения: 147
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar » 25 Февраль 2018, 1:29

Игорь Столяров писал(а):
22 Февраль 2018, 8:11
...Корректную работу WrapText можно получить только с размером шрифта по умолчанию.
Иначе надо всегда рассчитывать и выставлять высоту строки в зависимости от длины текста и параметров шрифта.
Ширина и высота строки зависят от параметров шрифта и его размера, их спокойно можно вычислять. А вот с определением ширины и высоты ячейки (строки и колонки) - тут проблемки, вернее отсутствие информации. Если вписать в ячейку какой-нибудь текст, то внутри ячейки присутствуют внутренние отступы текста от границ ячейки (слева или справа, сверху или снизу), которые явно зависят от размера шрифта и формата ячейки (левого или правого горизонтального выравнивания с n отступами, вертикального выравнивания).
По каким правилам рассчитываются эти отступы? - выясняю уже неделю, пока бес толку.
C10, Win10x64

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

libxlsxwriter for Clarion

Сообщение Игорь Столяров » 25 Февраль 2018, 6:16

RaFaeL писал(а):
24 Февраль 2018, 22:52
Если есть другие параметры формата, то сработает через очистку картинки.
OK ! Это решило бы вопрос. Подскажите пожалуйста, а как выполнить эту самую очистку картинки ?
Можно ли хотеть метод ClearPicture(), который сбросил бы параметры картинки, но оставил бы другие настройки формата ?
«V» значит Вендетта !

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

libxlsxwriter for Clarion

Сообщение RaFaeL » 25 Февраль 2018, 9:02

Picture=''
ExcelMask=''

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

libxlsxwriter for Clarion

Сообщение Игорь Столяров » 25 Февраль 2018, 9:18

Да, всё получилось ... Спасибо ! :)
«V» значит Вендетта !

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

libxlsxwriter for Clarion

Сообщение Игорь Столяров » 27 Февраль 2018, 15:10

Загадка - шутка для всех ценителей сабжа ! ;)
Почему приведённый ниже безобидный код валит экспорт в XLSXWriter ?

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

  ...
Loc:R1 Real(0)
Loc:R2 Real(0)

  CODE
  ...
  xlsx.ClearFormat()
  err#=xlsx.WriteNumber(1,1,Loc:R1 / Loc:R2)
«V» значит Вендетта !

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

libxlsxwriter for Clarion

Сообщение kreator » 27 Февраль 2018, 17:25

Метод WriteNumber валится? Или где-то дальше?
We are hard at work… for you. :)

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

libxlsxwriter for Clarion

Сообщение Игорь Столяров » 27 Февраль 2018, 17:38

kreator писал(а):
27 Февраль 2018, 17:25
Метод WriteNumber валится? Или где-то дальше?
Нет. Всё прекрасно и молча отрабатывается.
Вот только полученный XLSX файл является некорректным и не открывается Microsoft Excel.

Возможно, что-то с неправильной передачей данных непосредственно в DLL XLSXWriter,
потому что число передаётся в метод по значению и вот так всё работает:

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

  xlsx.ClearFormat()
  err#=xlsx.WriteNumber(1,1, 0 / 0)
«V» значит Вендетта !

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

libxlsxwriter for Clarion

Сообщение kreator » 27 Февраль 2018, 17:46

Библиотека честно пишет в файл значок бесконечности. А Эксель его не воспринимает. :D
А если без шуток, то результат деления на ноль в Кларионе ноль. Или я не прав? Если прав, то любой ноль должен давать такой результат. Проверьте.
We are hard at work… for you. :)

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

libxlsxwriter for Clarion

Сообщение Игорь Столяров » 27 Февраль 2018, 17:53

kreator писал(а):
27 Февраль 2018, 17:46
Если прав, то любой ноль должен давать такой результат.
Нет, нет, нет ! Ноль прекрасно записывается, с этим нет никаких проблем.
Чек внутри метода тоже показывает, что переменная содержит 0 (ноль) на момент вызова функции из DLL ...
Но вот дальше, что-то происходит ... :(
«V» значит Вендетта !

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

libxlsxwriter for Clarion

Сообщение kreator » 27 Февраль 2018, 18:12

Игорь Столяров писал(а):
27 Февраль 2018, 17:53
Ноль прекрасно записывается, с этим нет никаких проблем.
А 0.0000000001? Или 0.1E-15? Если тупо сделать round(Loc:R1 / Loc:R2, 0.0000000001)? Ненаучно! Да. Но чудес не бывает, число ведь вещественное. Получается, что не чистый ноль.
We are hard at work… for you. :)

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

libxlsxwriter for Clarion

Сообщение Игорь Столяров » 27 Февраль 2018, 18:20

kreator писал(а):
27 Февраль 2018, 18:12
Получается, что не чистый ноль.
Или не совпадение типов данных при вызове процедуры из DLL ...
REAL - вообще самый неприятный тип данных, везде реализован с какими-то оговорками .... :(
«V» значит Вендетта !

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

libxlsxwriter for Clarion

Сообщение RaFaeL » 27 Февраль 2018, 18:32

Скорее всего, она не содержит 0, а просто выводится 0 когда вы пытаетесь ее прочитать, а внутри там в этот момент неопределенность, которая и передается в библиотеку и затем пишется в файл
https://ru.wikipedia.org/wiki/NaN
Поскольку здесь https://libxlsxwriter.github.io/workshe ... e8580c2289 написано что Эксель не поддерживает неопределенности но по IEEE-754 они допустимы, считаю что это не глюк а фича, проверять надо, что на что делим )) Или хотя бы сначала рассчитывать, потом передавать
Но пример интересный

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

libxlsxwriter for Clarion

Сообщение Игорь Столяров » 27 Февраль 2018, 18:42

RaFaeL писал(а):
27 Февраль 2018, 18:32
а внутри там в этот момент неопределенность
И вроде бы да .... но есть 3 нюанса ... Забудем пока про LibXLSXWriter, смотрим со стороны Clarion.

1. Насколько я помню, нигде в документации на Clarion не указано, что что при делении на ноль в REAL записывается
неопределённость. Или тогда должна была быть проверка на эту неопределённость, что-то вроде проверки адреса на NULL.

2. Очень странно, что округление "неопределённости" до любой точности всегда даёт в результате явный ноль.
Не предельно минимальное / максимальное значение для этого типа данных, а именно конкретный ноль.

3. При использовании типа данных LONG в том же примере никаких неопределённостей не возникает.
Просто ноль и никаких проблем с LibXLSXWriter.
«V» значит Вендетта !

Аватара пользователя
Губин Игорь
Ветеран
Сообщения: 1167
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

libxlsxwriter for Clarion

Сообщение Губин Игорь » 27 Февраль 2018, 18:45

Игорь Столяров писал(а):
27 Февраль 2018, 18:42
асколько я помню
В Clarion вообще сложности с обработкой всяких "ситуаций". К примеру, примитивного переполнения от +=1 при бесконечном цикле
Это я только кажусь дураком! На самом деле я полный идиот!

Ответить