cJSON: Формат полей для вложенных структур

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

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

cJSON: Формат полей для вложенных структур

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

Да, скорость загрузки реально увеличилась раз в 5 (пять) ! :ty:

И изменился сам процесс загрузки:
- Ранее индикатор двигался более-менее равномерно;
- Теперь он быстро пробегает и подвисает в конце.
(напоминает запись под Logout / Commit)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

cJSON: Формат полей для вложенных структур

Сообщение finsoftrz »

Игорь, а не проще было вынести прогрессор за пределы парсинга? У Вас просмотривается список файлов на предмет нужных, вот при этом просмотре и повесить стандартным образом.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

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

Игорь Столяров писал(а): 03 Январь 2023, 14:01 - Теперь он быстро пробегает и подвисает в конце.
Это зависит от структуры json. Колбэк вызывается на выходе из каждого объекта {} или массива []. Если у Вас последний (или близко к концу) объект содержит длинные строки или очень много строк/чисел, то это может казаться подвисанием.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

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

finsoftrz писал(а): 03 Январь 2023, 14:56 У Вас просмотривается список файлов на предмет нужных
Это иное. Если мы перебираем заголовки файлов в папке - то конечно можно повесть индикатор по кол-ву файлов.
А если мы загружаем из файла большой JSON пакет в котором тысячи тегов - то теперь есть индикатор в ParseCallback().
Сейчас всё более - менее красиво и гармонично работает. Сейчас пойдём в ещё одну тёмную сторону - DIM внутри QUEUE. ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

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

Дед Пахом писал(а): 03 Январь 2023, 15:28 Если у Вас последний (или близко к концу) объект содержит длинные строки
Именно так и есть ! В хвосте JSON список товаров с фотками образцов и сертификатами в PDF. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

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

Игорь Столяров писал(а): 03 Январь 2023, 15:33 В хвосте JSON список товаров с фотками образцов и сертификатами в PDF.
Обновил cjson.clw, теперь колбэк вызывается и для длинных строк. Номер версии не менял.
С уважением, ДП
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

cJSON: Формат полей для вложенных структур

Сообщение finsoftrz »

Игорь Столяров писал(а): 03 Январь 2023, 15:33
Дед Пахом писал(а): 03 Январь 2023, 15:28 Если у Вас последний (или близко к концу) объект содержит длинные строки
Именно так и есть ! В хвосте JSON список товаров с фотками образцов и сертификатами в PDF. :)
Извращенцы... :-) Кстати, перед новым годом тоже делал размещение сертификатов в web модуле системы электронных заказов. Но решили, что лучше в jpeg - на сайте открывается аналогично pdf, а можно вставлять в печатную форму, как раньше часто делали. Типа совместимость без лишних телодвижений.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

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

finsoftrz писал(а): 03 Январь 2023, 16:46 Типа совместимость без лишних телодвижений.
Зависит от цели действия. Если показать в броузере - то удобней картинку.
Если Вы хотите, что бы документ был где-то распечатан именно в том виде как Вы его создали - то PDF.
(Print Data Format - он собственно для этого и был создан) ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

cJSON: Формат полей для вложенных структур

Сообщение finsoftrz »

Выясняли, поставщики присылают сканы сертификатов по разному, чаще не в pdf. На сайтах аналогично. Выгрузка в pdf это дополнительное телодвижение, так как сертификаты используются и в кларионовском приложении для вставки в печатные формы. У клиента были, в основном, jpeg и bmp. Bmp большой, сказали, пересохраним все в jpeg, если размещать на сайте. Pdf рассматривался тоже, но у клиента тот самый сервер без патчей, на котором, в частности, image2pdf не работает. Обновлять это целая эпопея. Потом попробовал jpeg, все классно, нафига козе баян.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

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

Если позволите - более корректный пример вызова индикатора.
(иначе он не работает при повторном вызове распарса, т.к. curPercent уже = 100)

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

jsonFactory  Class(cJSONFactory)
ParseCallback  Procedure(Long pInputLength, Long pCurrentPos, Long pCurrentDepth), Derived
        end
curPercent  Long, Auto, Static

  Code
  curPercent = 0
  Root &= jsonFactory.ParseFile(sFileName1 ...)
  If Not (Root &= Null) ...
...
  curPercent = 0
  Root &= jsonFactory.ParseFile(sFileName2 ...)
  If Not (Root &= Null) ...
...
jsonFactory.ParseCallback  Procedure(Long pInputLength, Long pCurrentPos, Long pCurrentDepth)
newPercent  Long, Auto
  Code
  newPercent = (pCurrentPos / pInputLength * 100)
  If newPercent > curPercent
     curPercent = newPercent
     printd('ParseCallback(%i, %i, %i): progress %i%%', pInputLength, pCurrentPos, pCurrentDepth, curPercent)
  end
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

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

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

cJSON: Формат полей для вложенных структур

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

Добрый день !

Скажу сразу - долго сам пытался разобраться, но не получилось победить индиктор загрузки. :(
Посмотрите пожалуйста прикреплённый пример.
Специально сделал загрузку одного Queue без структур и файлов и т.д. (а боевые структуры в несколько раз тучнее)
Вроде бы всё просто как детская игра в крысу.
Но у меня после заполнения индикатора идёт подвис на 40-50 сек. и только потом операция выполнена ... :(
В чём я не прав ? Спасибо за помощь регионам. ;)
Последний раз редактировалось Игорь Столяров 09 Январь 2023, 17:25, всего редактировалось 1 раз.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

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

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

cJSON: Формат полей для вложенных структур

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

Дед Пахом писал(а): 09 Январь 2023, 16:13 Давайте уже закроем эту ветку
В новый год - с оптимизмом ! :)
Переносить записи в форуме могут только цветные (имена пользователей).
Я просто больше не буду в эту тему отправлять сообщения.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

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

А я в этой теме больше не буду отвечать, это последний раз :-)
После завершения MyJSon.ParseFile и заполнения шкалы отрабатывает долгоиграющая Root.ToQueue(qList).
С уважением, ДП
Закрыто