libxlsxwriter for Clarion
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1379
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Если есть другие параметры формата, то сработает через очистку картинки. В примере проблема в том, что формат получается пустой
libxlsxwriter for Clarion
Ширина и высота строки зависят от параметров шрифта и его размера, их спокойно можно вычислять. А вот с определением ширины и высоты ячейки (строки и колонки) - тут проблемки, вернее отсутствие информации. Если вписать в ячейку какой-нибудь текст, то внутри ячейки присутствуют внутренние отступы текста от границ ячейки (слева или справа, сверху или снизу), которые явно зависят от размера шрифта и формата ячейки (левого или правого горизонтального выравнивания с n отступами, вертикального выравнивания).Игорь Столяров писал(а): ↑22 Февраль 2018, 8:11...Корректную работу WrapText можно получить только с размером шрифта по умолчанию.
Иначе надо всегда рассчитывать и выставлять высоту строки в зависимости от длины текста и параметров шрифта.
По каким правилам рассчитываются эти отступы? - выясняю уже неделю, пока бес толку.
C10, Win10x64
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
libxlsxwriter for Clarion
OK ! Это решило бы вопрос. Подскажите пожалуйста, а как выполнить эту самую очистку картинки ?RaFaeL писал(а): ↑24 Февраль 2018, 22:52Если есть другие параметры формата, то сработает через очистку картинки.
Можно ли хотеть метод ClearPicture(), который сбросил бы параметры картинки, но оставил бы другие настройки формата ?
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
libxlsxwriter for Clarion
Да, всё получилось ... Спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
libxlsxwriter for Clarion
Загадка - шутка для всех ценителей сабжа !
Почему приведённый ниже безобидный код валит экспорт в XLSXWriter ?
Почему приведённый ниже безобидный код валит экспорт в XLSXWriter ?
Код: Выделить всё
...
Loc:R1 Real(0)
Loc:R2 Real(0)
CODE
...
xlsx.ClearFormat()
err#=xlsx.WriteNumber(1,1,Loc:R1 / Loc:R2)
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
libxlsxwriter for Clarion
Метод WriteNumber валится? Или где-то дальше?
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
libxlsxwriter for Clarion
Нет. Всё прекрасно и молча отрабатывается.
Вот только полученный XLSX файл является некорректным и не открывается Microsoft Excel.
Возможно, что-то с неправильной передачей данных непосредственно в DLL XLSXWriter,
потому что число передаётся в метод по значению и вот так всё работает:
Код: Выделить всё
xlsx.ClearFormat()
err#=xlsx.WriteNumber(1,1, 0 / 0)
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
libxlsxwriter for Clarion
Библиотека честно пишет в файл значок бесконечности. А Эксель его не воспринимает.
А если без шуток, то результат деления на ноль в Кларионе ноль. Или я не прав? Если прав, то любой ноль должен давать такой результат. Проверьте.
А если без шуток, то результат деления на ноль в Кларионе ноль. Или я не прав? Если прав, то любой ноль должен давать такой результат. Проверьте.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
libxlsxwriter for Clarion
Нет, нет, нет ! Ноль прекрасно записывается, с этим нет никаких проблем.
Чек внутри метода тоже показывает, что переменная содержит 0 (ноль) на момент вызова функции из DLL ...
Но вот дальше, что-то происходит ...
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
libxlsxwriter for Clarion
А 0.0000000001? Или 0.1E-15? Если тупо сделать round(Loc:R1 / Loc:R2, 0.0000000001)? Ненаучно! Да. Но чудес не бывает, число ведь вещественное. Получается, что не чистый ноль.Игорь Столяров писал(а): ↑27 Февраль 2018, 17:53 Ноль прекрасно записывается, с этим нет никаких проблем.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
libxlsxwriter for Clarion
Или не совпадение типов данных при вызове процедуры из DLL ...
REAL - вообще самый неприятный тип данных, везде реализован с какими-то оговорками ....
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1379
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
libxlsxwriter for Clarion
Скорее всего, она не содержит 0, а просто выводится 0 когда вы пытаетесь ее прочитать, а внутри там в этот момент неопределенность, которая и передается в библиотеку и затем пишется в файл
https://ru.wikipedia.org/wiki/NaN
Поскольку здесь https://libxlsxwriter.github.io/workshe ... e8580c2289 написано что Эксель не поддерживает неопределенности но по IEEE-754 они допустимы, считаю что это не глюк а фича, проверять надо, что на что делим )) Или хотя бы сначала рассчитывать, потом передавать
Но пример интересный
https://ru.wikipedia.org/wiki/NaN
Поскольку здесь https://libxlsxwriter.github.io/workshe ... e8580c2289 написано что Эксель не поддерживает неопределенности но по IEEE-754 они допустимы, считаю что это не глюк а фича, проверять надо, что на что делим )) Или хотя бы сначала рассчитывать, потом передавать
Но пример интересный
- Игорь Столяров
- Ветеран движения
- Сообщения: 7447
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 51 раз
libxlsxwriter for Clarion
И вроде бы да .... но есть 3 нюанса ... Забудем пока про LibXLSXWriter, смотрим со стороны Clarion.
1. Насколько я помню, нигде в документации на Clarion не указано, что что при делении на ноль в REAL записывается
неопределённость. Или тогда должна была быть проверка на эту неопределённость, что-то вроде проверки адреса на NULL.
2. Очень странно, что округление "неопределённости" до любой точности всегда даёт в результате явный ноль.
Не предельно минимальное / максимальное значение для этого типа данных, а именно конкретный ноль.
3. При использовании типа данных LONG в том же примере никаких неопределённостей не возникает.
Просто ноль и никаких проблем с LibXLSXWriter.
За теми кто отстал - не возвращаться. (С) Кодекс
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2352
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 19 раз
libxlsxwriter for Clarion
В Clarion вообще сложности с обработкой всяких "ситуаций". К примеру, примитивного переполнения от +=1 при бесконечном цикле
Это я только кажусь дураком! На самом деле я полный идиот!