Страница 17 из 18

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

Добавлено: 03 Январь 2023, 14:01
Игорь Столяров
Да, скорость загрузки реально увеличилась раз в 5 (пять) ! :ty:

И изменился сам процесс загрузки:
- Ранее индикатор двигался более-менее равномерно;
- Теперь он быстро пробегает и подвисает в конце.
(напоминает запись под Logout / Commit)

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

Добавлено: 03 Январь 2023, 14:56
finsoftrz
Игорь, а не проще было вынести прогрессор за пределы парсинга? У Вас просмотривается список файлов на предмет нужных, вот при этом просмотре и повесить стандартным образом.

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

Добавлено: 03 Январь 2023, 15:28
Дед Пахом
Игорь Столяров писал(а): 03 Январь 2023, 14:01 - Теперь он быстро пробегает и подвисает в конце.
Это зависит от структуры json. Колбэк вызывается на выходе из каждого объекта {} или массива []. Если у Вас последний (или близко к концу) объект содержит длинные строки или очень много строк/чисел, то это может казаться подвисанием.

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

Добавлено: 03 Январь 2023, 15:31
Игорь Столяров
finsoftrz писал(а): 03 Январь 2023, 14:56 У Вас просмотривается список файлов на предмет нужных
Это иное. Если мы перебираем заголовки файлов в папке - то конечно можно повесть индикатор по кол-ву файлов.
А если мы загружаем из файла большой JSON пакет в котором тысячи тегов - то теперь есть индикатор в ParseCallback().
Сейчас всё более - менее красиво и гармонично работает. Сейчас пойдём в ещё одну тёмную сторону - DIM внутри QUEUE. ;)

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

Добавлено: 03 Январь 2023, 15:33
Игорь Столяров
Дед Пахом писал(а): 03 Январь 2023, 15:28 Если у Вас последний (или близко к концу) объект содержит длинные строки
Именно так и есть ! В хвосте JSON список товаров с фотками образцов и сертификатами в PDF. :)

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

Добавлено: 03 Январь 2023, 15:46
Дед Пахом
Игорь Столяров писал(а): 03 Январь 2023, 15:33 В хвосте JSON список товаров с фотками образцов и сертификатами в PDF.
Обновил cjson.clw, теперь колбэк вызывается и для длинных строк. Номер версии не менял.

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

Добавлено: 03 Январь 2023, 16:46
finsoftrz
Игорь Столяров писал(а): 03 Январь 2023, 15:33
Дед Пахом писал(а): 03 Январь 2023, 15:28 Если у Вас последний (или близко к концу) объект содержит длинные строки
Именно так и есть ! В хвосте JSON список товаров с фотками образцов и сертификатами в PDF. :)
Извращенцы... :-) Кстати, перед новым годом тоже делал размещение сертификатов в web модуле системы электронных заказов. Но решили, что лучше в jpeg - на сайте открывается аналогично pdf, а можно вставлять в печатную форму, как раньше часто делали. Типа совместимость без лишних телодвижений.

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

Добавлено: 03 Январь 2023, 18:03
Игорь Столяров
finsoftrz писал(а): 03 Январь 2023, 16:46 Типа совместимость без лишних телодвижений.
Зависит от цели действия. Если показать в броузере - то удобней картинку.
Если Вы хотите, что бы документ был где-то распечатан именно в том виде как Вы его создали - то PDF.
(Print Data Format - он собственно для этого и был создан) ;)

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

Добавлено: 03 Январь 2023, 18:27
finsoftrz
Выясняли, поставщики присылают сканы сертификатов по разному, чаще не в pdf. На сайтах аналогично. Выгрузка в pdf это дополнительное телодвижение, так как сертификаты используются и в кларионовском приложении для вставки в печатные формы. У клиента были, в основном, jpeg и bmp. Bmp большой, сказали, пересохраним все в jpeg, если размещать на сайте. Pdf рассматривался тоже, но у клиента тот самый сервер без патчей, на котором, в частности, image2pdf не работает. Обновлять это целая эпопея. Потом попробовал jpeg, все классно, нафига козе баян.

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

Добавлено: 05 Январь 2023, 9:28
Игорь Столяров
Если позволите - более корректный пример вызова индикатора.
(иначе он не работает при повторном вызове распарса, т.к. 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

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

Добавлено: 08 Январь 2023, 10:49
Игорь Столяров
В процедуре json::LoadFile() переменная pvData - рудимент (не используется).

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

Добавлено: 08 Январь 2023, 21:35
Игорь Столяров
Добрый день !

Скажу сразу - долго сам пытался разобраться, но не получилось победить индиктор загрузки. :(
Посмотрите пожалуйста прикреплённый пример.
Специально сделал загрузку одного Queue без структур и файлов и т.д. (а боевые структуры в несколько раз тучнее)
Вроде бы всё просто как детская игра в крысу.
Но у меня после заполнения индикатора идёт подвис на 40-50 сек. и только потом операция выполнена ... :(
В чём я не прав ? Спасибо за помощь регионам. ;)

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

Добавлено: 09 Январь 2023, 16:13
Дед Пахом
Такое вот сообщество, помогают как могут.
Давайте уже закроем эту ветку и откроем новую про индикатор.

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

Добавлено: 09 Январь 2023, 16:46
Игорь Столяров
Дед Пахом писал(а): 09 Январь 2023, 16:13 Давайте уже закроем эту ветку
В новый год - с оптимизмом ! :)
Переносить записи в форуме могут только цветные (имена пользователей).
Я просто больше не буду в эту тему отправлять сообщения.

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

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