libxlsxwriter for Clarion

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

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

Ну да, пересечение, и ошибок возврата нет.
Наверно правильно, т.к. всё пишется конвейером и такие ситуации должен отслеживать пользователь.
C10, Win10x64
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

libxlsxwriter for Clarion

Сообщение kreator »

ИМХО, нужна проверка на пересечение. Программист всё же человек, ошибиться может.
We are hard at work… for you. :)
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

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

libxlsxwriter for Clarion

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

Larion писал(а): 19 Март 2020, 10:03 Пересечений не выявил. Объединения ячеек происходят в разных строках без пересечений.
На самом деле это не единственная "проблема" приводящая к созданию битого XLSX.
Здесь просто нужно не упираться рогом, а проверить свой код, особенно когда несколько человек уже сказали о типичной ошибке. ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Larion
Бывалый
Сообщения: 91
Зарегистрирован: 28 Ноябрь 2005, 10:26
Откуда: Novosibirsk

libxlsxwriter for Clarion

Сообщение Larion »

Спасибо за содействие. Буду разбираться почему строка не добавилась.
С уважением Larion.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

libxlsxwriter for Clarion

Сообщение kreator »

Конечно, во Враппере это неправильно делать. В исходной библиотеке надо делать. И другие проблемы в ней же надо решать. Пусть файл будет кривой. Но он хотя бы должен открыться.
We are hard at work… for you. :)
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Да он открывается, только с предупреждением. Говоришь открыть как есть и какой-то открывает
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

Да не надо ни там ни там что-то менять. Моё убеждённое мнение - это должен делать пользователь.
Очередь в памяти -> диапазон очередного merge -> дальше простая геометрия пересечения линий и четырёхугольников.
kreator писал(а): 19 Март 2020, 15:41 В исходной библиотеке надо делать.
Ну так сделайте, уверен, что автор на запросный тикет ответит так же, как и я.
C10, Win10x64
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

libxlsxwriter for Clarion

Сообщение Admin »

Короче кто напишет - кидайте сюда. Сделаем ссылку в первом посте.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

Ну, примерно, что-то такое:

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

   Program
   Map
      inter_ranges(long first_row, short first_col, long last_row, short last_col), long
   .

diap_range  Queue, pre(dr)
first_row   long
first_col   short
last_row    long
last_col    short.

   Code

      err# = inter_ranges(2, 2, 2, 6)   ; do err_mesage   ! 1диап.
      err# = inter_ranges(3, 5, 7, 8)   ; do err_mesage   ! 2диап.
      err# = inter_ranges(6, 2, 7, 5)   ; do err_mesage   ! 3диап.
      err# = inter_ranges(9, 3, 11, 7)  ; do err_mesage   ! 4диап.
      err# = inter_ranges(10, 5, 10, 7) ; do err_mesage   ! 5диап.

   Return

err_mesage  Routine
   Case err#
        of 0; message('диапазоны не пересекаются|')
        of 1; message('диапазоны пересекаются|')
        of 2; message('ошибка дынных|')
   .

!=====================================================================================================================================
inter_ranges  Procedure(long first_row, short first_col, long last_row, short last_col)
! Return  -  0 - нет пересечения; 1 - есть пересечение; 2 - ошибка в данных
    Code

      If (first_row = last_row and first_col = last_col) then Return 2.
      If (first_row > last_row) then tmp_row# = last_row; last_row = first_row; first_row = tmp_row#.
      If (first_col > last_col) then tmp_col# = last_col; last_col = first_col; first_col = tmp_col#.

      nrq# = Records(diap_range)
      If nrq# = 0 then
         do add_diap_range
         Return 0
      .
         
      Loop i# = 1 to nrq#
           Get(diap_range, i#)
           If ~((first_col > dr:last_col) or (last_col < dr:first_col) or (first_row > dr:last_row) or (last_row < dr:first_row)) then
              Return 1
           .
      .
      do add_diap_range

   Return 0

add_diap_range  Routine
   dr:first_row = first_row ; dr:first_col = first_col; dr:last_row  = last_row; dr:last_col  = last_col
   add(diap_range)
!=====================================================================================================================================
im.png
im.png (3.9 КБ) 6746 просмотров
C10, Win10x64
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

vic7tar писал(а): 19 Март 2020, 16:08 Ну так сделайте, уверен, что автор на запросный тикет ответит так же, как и я.
Он кстати на днях так и ответил )
https://github.com/jmcnamara/libxlsxwri ... -607528111
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libxlsxwriter for Clarion

Сообщение RaFaeL »

Обновил версию библиотеки в шапке до 0.9.5, добавлены 2 каких-то вида линейных диаграмм
Надеюсь все для задания типа диаграмм использовали equate иначе вам придется править )
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

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

libxlsxwriter for Clarion

Сообщение RaFaeL »

vic7tar писал(а): 04 Август 2020, 10:58 Что-то не могу сообразить - а как в пустой ячейке установить цвет заливки и цвет шрифта без применения xlsx.Write...()?
Для этого есть специальный метод WriteBlank. Без него - никак )
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

libxlsxwriter for Clarion

Сообщение vic7tar »

RaFaeL писал(а): 04 Август 2020, 22:31 Для этого есть специальный метод WriteBlank. Без него - никак )
Такой же эффект даёт и WriteString(... , chr(0 или 32)).
C10, Win10x64
Ответить