Size: a a a

2020 September 14

СП

Сергей Пятыгин... in Delphi & Lazarus
Renat Suleymanov
Собственно какой вопрос конкретней. Выше кажется кидали примеры, организации кода в таком случае
Да, верно пример были, но я вводил тогда в заблуждение, так как не понимал некоторые вещи. Реализация выше была через динамический массив. Но ТЛист и его аналоги позволяют проще организовать работу, скрыв в себе "обслуживание массива".
источник

AS

Alexey Shumkin in Delphi & Lazarus
а характер ошибки говорит о том, что читается поле объекта но указатель объекта - nil...

вообще у тебя есть отладчик..
источник

KB

Kit Bayun in Delphi & Lazarus
МихаИл
Добрый день коллеги!
Есть вопрос:
пытаюсь разобрать JSON, дохожу до определенного уровня выдает ошибку.
прошу помочь понять мне где я ошибся.
скрины прилагаю.
перед присваиванием проверяй  тип данных
источник

RS

Renat Suleymanov in Delphi & Lazarus
Сергей Пятыгин
Да, верно пример были, но я вводил тогда в заблуждение, так как не понимал некоторые вещи. Реализация выше была через динамический массив. Но ТЛист и его аналоги позволяют проще организовать работу, скрыв в себе "обслуживание массива".
Проше, да. Поэтому списки и рекомендовали. И с ним тоже примеры были
источник

RS

Renat Suleymanov in Delphi & Lazarus
Сергей Пятыгин
Да, верно пример были, но я вводил тогда в заблуждение, так как не понимал некоторые вещи. Реализация выше была через динамический массив. Но ТЛист и его аналоги позволяют проще организовать работу, скрыв в себе "обслуживание массива".
Вот, чтобы долго не искать, пример организации поля на основе TFPGObjectList  https://github.com/Al-Muhandis/fp-youtube-dl/blob/7a6c4be98ff0e5f9f4c5d8aaee1c26f062560b6f/youtubedl.pas#L70 Почти тоже, что TFPGList, но тип элемента это только объекты.
Это как раз твой вариант 2, когда свойство и есть список. Свойство массив при этом не используется.
источник

AS

Alexey Shumkin in Delphi & Lazarus
МихаИл
Добрый день коллеги!
Есть вопрос:
пытаюсь разобрать JSON, дохожу до определенного уровня выдает ошибку.
прошу помочь понять мне где я ошибся.
скрины прилагаю.
сдаётся мне, prof_arrey - nil
а почему - догадайся сам ))
источник

Y

YuS in Delphi & Lazarus
скорее всего длина = 0,  еслиб nil, вроде бы ошибка должна появится в момент получения размера массива.
источник

Y

YuS in Delphi & Lazarus
а вот когда происходит попытка получения объекта которого нет в массиве то там и exception.
погляди чему равен i_prof если =0 то в цикле делать нечего
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Renat Suleymanov
Вот, чтобы долго не искать, пример организации поля на основе TFPGObjectList  https://github.com/Al-Muhandis/fp-youtube-dl/blob/7a6c4be98ff0e5f9f4c5d8aaee1c26f062560b6f/youtubedl.pas#L70 Почти тоже, что TFPGList, но тип элемента это только объекты.
Это как раз твой вариант 2, когда свойство и есть список. Свойство массив при этом не используется.
В примере FFormats:=TFormatList.Create; создание есть только для поля. Но свойство имеет тот же тип, что и поле TFormatList. Для свойства нет необходимости в .Create?
источник

М

МихаИл in Delphi & Lazarus
Alexey Shumkin
сдаётся мне, prof_arrey - nil
а почему - догадайся сам ))
можно в ЛС?
источник

М

МихаИл in Delphi & Lazarus
там nil
источник

Ш

Шляпник in Delphi & Lazarus
YuS
скорее всего длина = 0,  еслиб nil, вроде бы ошибка должна появится в момент получения размера массива.
дык уже написали вроде, обход массива идёт от 0 до count, а правильно до count-1
источник

A

Anthony in Delphi & Lazarus
Шляпник
дык уже написали вроде, обход массива идёт от 0 до count, а правильно до count-1
Он и написал))
источник

Ш

Шляпник in Delphi & Lazarus
Anthony
Он и написал))
ну ой :)
источник

Y

YuS in Delphi & Lazarus
Сергей Пятыгин
В примере FFormats:=TFormatList.Create; создание есть только для поля. Но свойство имеет тот же тип, что и поле TFormatList. Для свойства нет необходимости в .Create?
Даже затрудняюсь сформулировать :). Свойство предназначено для перенаправления доступа к какому либо полю напрямую или через методы.
источник

Y

YuS in Delphi & Lazarus
Поэтому если задача свойства получить данные из поля FFormats то создавать еще раз не надо.
источник

Y

YuS in Delphi & Lazarus
Если еще раз создашь, то создастся новый объект который присвоится к FFormats а старый потеряется - соответственно утечка памяти.
источник

RS

Renat Suleymanov in Delphi & Lazarus
Сергей Пятыгин
В примере FFormats:=TFormatList.Create; создание есть только для поля. Но свойство имеет тот же тип, что и поле TFormatList. Для свойства нет необходимости в .Create?
Свойство (property) по своей сути это не данные, то есть не поле, хотя обычно инкапсулирует какое-то приватное поле (private field). Свойство объекта, это... просто свойство объекта, его реализация на плечах программиста. Он может просто отзеркалить его на какое-то внутреннее поле. Может сделать доступ к полю через методы Get... и Set... Свойство вообще может не ссылаться ни на какое поле с данными, а быть полностью вычисляемым с помощью указанных выше методов. Свойства служат для изоляции внутренностей объекта от внешней среды
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Да, все понял! Как говориться-у ребенка радость открытия! Все работает, спасибо!!!
источник

Ш

Шляпник in Delphi & Lazarus
Я тут прохожу курсы по Яве и заодно повторяю базу ООП, для меня мягко говоря было удивительно, что оказывается в ООП не 3 принципа, как нас учили в универе, а 4 :))) Это, что-то поменялось за последние 15 лет? Или просто нас криво учили?
источник