Size: a a a

2020 November 27

СП

Сергей Пятыгин... in Delphi & Lazarus
Viktor Akselrod
почти.
пусть это будет "контроллер"
его кто-то создает, потом заполняет данными из ГУИ, настраивает каллбеки.
затем контроллер передается потоку на выполнение расчетов, либо расчеты выполняются в основном потоке.
по окончанию расчетов дергаются каллбеки, передающие результаты расчетов в аргументах, либо сам контроллер, если итоговые данные хранятся в нем же.
за разрушение контроллера отвечает либо поток в первом случае, либо вызывающий код во втором.
его кто-то создает,=имеется ввиду некое событие-нажатие кнопки, командная строка в терминале?
источник

VA

Viktor Akselrod in Delphi & Lazarus
Kit Bayun
в новой json-библиотеке, которая поставляется искаропки, начиная с 10.1 выдумали сделать так, что свойство index у массивов начинается с -1 (минус один), а не с 0.
http://docwiki.embarcadero.com/Libraries/Sydney/en/System.JSON.Builders.TJSONIterator.Index
а если это итерация по объектам джесона, то там индекс начинается с нуля.
это что за извращение?
по ссылке написано нечто другое
источник

VA

Viktor Akselrod in Delphi & Lazarus
Сергей Пятыгин
его кто-то создает,=имеется ввиду некое событие-нажатие кнопки, командная строка в терминале?
да. создатель может быть любой
источник

KB

Kit Bayun in Delphi & Lazarus
вот в 10.4.1 уже нашел 3 исправления, которые были не исправлены в 10.3
1. Эти кнопки (http://prntscr.com/vr2msy) для выпадающих списков теперь работают.
2. В окне Structure теперь выбирается именно тот элемент, на которые щелкаешь мышкой.
3. В инспекторе свойств в текстовых свойствах, если был длинный текст, то он не прокручивался и каретка не перемещалась назад.
источник

KB

Kit Bayun in Delphi & Lazarus
Viktor Akselrod
по ссылке написано нечто другое
Index of the current token if it is a value within an array, or -1 if the token is not a value within an array.

Индекс текущего токена, если это значение в массиве, или -1, если токен не является значением в массиве.
источник

VA

Viktor Akselrod in Delphi & Lazarus
Kit Bayun
Index of the current token if it is a value within an array, or -1 if the token is not a value within an array.

Индекс текущего токена, если это значение в массиве, или -1, если токен не является значением в массиве.
если элемент не включен в массив, то у него индекса для этого массива, те -1
по аналогии, например, с TString.IndexOf
какая у тебя проблема? обычно итераторы не используются напрямую в клиентском коде
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Viktor Akselrod
почти.
пусть это будет "контроллер"
его кто-то создает, потом заполняет данными из ГУИ, настраивает каллбеки.
затем контроллер передается потоку на выполнение расчетов, либо расчеты выполняются в основном потоке.
по окончанию расчетов дергаются каллбеки, передающие результаты расчетов в аргументах, либо сам контроллер, если итоговые данные хранятся в нем же.
за разрушение контроллера отвечает либо поток в первом случае, либо вызывающий код во втором.
Виктор, на память не приходит из открытого на Делфи/Паскале проект на ГитХабе и тп в котором можно посмотреть реализацию потоков с объектами? Вики смотрел, но там без объектов.
источник

KB

Kit Bayun in Delphi & Lazarus
вот джейсон:
"ID":[0,55,true,false]

нужно получить значения массива по индексу
источник

VA

Viktor Akselrod in Delphi & Lazarus
Kit Bayun
вот джейсон:
"ID":[0,55,true,false]

нужно получить значения массива по индексу
лучше будет, если ты покажешь свой код
источник

KB

Kit Bayun in Delphi & Lazarus
проблема в том, что нет чего-то вроде
Iterator[0].AsString
источник

KB

Kit Bayun in Delphi & Lazarus
if Iterator.&Type = TJsonToken.StartArray then
         if Iterator.Recurse then
         begin
           s := Iterator.Path;

           // "ID":[0,55,true,false]
           while Iterator.Next do
           begin
             case Iterator.Index of
источник

VA

Viktor Akselrod in Delphi & Lazarus
Kit Bayun
if Iterator.&Type = TJsonToken.StartArray then
         if Iterator.Recurse then
         begin
           s := Iterator.Path;

           // "ID":[0,55,true,false]
           while Iterator.Next do
           begin
             case Iterator.Index of
во-воу-воу. так я и думал 🙂
источник

KB

Kit Bayun in Delphi & Lazarus
??
источник

VA

Viktor Akselrod in Delphi & Lazarus
Kit Bayun
проблема в том, что нет чего-то вроде
Iterator[0].AsString
есть гораздо удобней и безопасней вариант
http://docwiki.embarcadero.com/Libraries/Sydney/en/System.JSON.TJSONValue.TryGetValue
источник

KB

Kit Bayun in Delphi & Lazarus
вы в справку не той библиотеки полезли
источник

VA

Viktor Akselrod in Delphi & Lazarus
Kit Bayun
if Iterator.&Type = TJsonToken.StartArray then
         if Iterator.Recurse then
         begin
           s := Iterator.Path;

           // "ID":[0,55,true,false]
           while Iterator.Next do
           begin
             case Iterator.Index of
и повторюсь - никто обычно не исползует итераторы напрямую в клиентском коде
итераторы нужны в основном для for in
источник

KB

Kit Bayun in Delphi & Lazarus
ещё раз:
>> в новой json-библиотеке, которая поставляется искаропки, начиная с 10.1
источник

VA

Viktor Akselrod in Delphi & Lazarus
Kit Bayun
вы в справку не той библиотеки полезли
в делфи только одна стандартная json библиотека
источник

KB

Kit Bayun in Delphi & Lazarus
Вы не поняли:
начиная с Delphi 10.1 нам предлагается сразу два фреймворка для работы с JSON
источник

KB

Kit Bayun in Delphi & Lazarus
В свою очередь, “Readers and Writers JSON Framework” – это логическое продолжение развития работы с JSON в Delphi. Как было указано выше, эта библиотека позволяет читать/писать json напрямую, не создавая при этом каких-либо промежуточных объектов. Логично предположить, что именно эту библиотеку стоит использовать при работе с “большими” JSON-данными, когда “JSON Objects Framework” не справляется с задачей парсинга json и выкидывает “Out of memory”. Более того, согласно официальной документации, “Readers and Writers JSON Framework” поддерживает работу с BSON.
http://webdelphi.ru/2019/03/rabota-s-json-v-delphi-10-3-rio/#vvedenie
источник