Size: a a a

2020 February 19

ГМ

Геннадий Малинин in Delphi & Lazarus
Sergey Bodrov
Я этот этап уже проходил. Потом были таблицы больше размера оперативки и извращения с mapped file, потом вернулся к обработчикам OnData.
Так как бы) Ты чего. Я ж собственно с "OnData" и работаю. Сам сделал таблицу на основе TCustomGrid, с живой отрисовкой данных.
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Либо через DrawCell, если не просто текст
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
источник

SB

Sergey Bodrov in Delphi & Lazarus
Геннадий Малинин
Так как бы) Ты чего. Я ж собственно с "OnData" и работаю. Сам сделал таблицу на основе TCustomGrid, с живой отрисовкой данных.
Ты же TList под это дело заточил. =) А он тупо хранилище указателей, а не генератор данных.
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Sergey Bodrov
Ты же TList под это дело заточил. =) А он тупо хранилище указателей, а не генератор данных.
Ну тут разные способы. В таких структурах-дженериках я храню сырые данные. Напрямую пишущиеся в таблицу
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Если конечно их не десятки тысяч. Если Их дохрена, таблица и из бд может напрямую рисовать
источник

SB

Sergey Bodrov in Delphi & Lazarus
Стандартный дельфевый TDataset хорош тем, что он не хранит данные, а является интерфейсом для работы с данными. И он не ограничен определенным количеством, через  First()/Next() он работает как итератор и может выдавать больше данных, чем влезает в память. И еще многое другое. Да, он избыточно сложный. Но и возможностей у него намного больше, чем у TList
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Sergey Bodrov
Стандартный дельфевый TDataset хорош тем, что он не хранит данные, а является интерфейсом для работы с данными. И он не ограничен определенным количеством, через  First()/Next() он работает как итератор и может выдавать больше данных, чем влезает в память. И еще многое другое. Да, он избыточно сложный. Но и возможностей у него намного больше, чем у TList
Так их сравнивать вообще нестоит)
источник

SB

Sergey Bodrov in Delphi & Lazarus
Геннадий Малинин
Так их сравнивать вообще нестоит)
Почему? Датасет ведь специально создан для работы с талицами. А TList это просто массив указателей. Даже не связный список, а непрерывный массив. Объяснить разницу?
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Эм, разницу в чем? Между связным списком и массивом? Да как бы можешь, но не мне. Я как бы понимаю. Указатель на элемент, который имеет указатель на следующий элемент, бла бла бла
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
В отличии, от массива, где элементы в памяти строго по порядку
источник

SB

Sergey Bodrov in Delphi & Lazarus
Совершенно верно. Прикол в том, что добавление-удаление элементов в непрерывном массиве выполняется гораздо дольше, особенно если в массиве много элементов. И после некоторого времени возникают проблемы с фрагментацией памяти, когда суммарно памяти много, а свободного куска нужного размера нет.
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Sergey Bodrov
Совершенно верно. Прикол в том, что добавление-удаление элементов в непрерывном массиве выполняется гораздо дольше, особенно если в массиве много элементов. И после некоторого времени возникают проблемы с фрагментацией памяти, когда суммарно памяти много, а свободного куска нужного размера нет.
Ну так я и говорю, что не стоит использовать списки и выобще хранить в памяти много данных
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Будь то связные списки или массивы
источник

SB

Sergey Bodrov in Delphi & Lazarus
Менеджер памяти хорошо работает с множеством малых элементов в куче (нормальные строки, экземпляры классов, мелкие record). Но для больших кусков памяти используется отдельный аллокатор, со своими причудами.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Читаемость - да. А размер кода под вопросом. Специализация женерика порождает новый класс под капотом. Не наследника, а копию класса.
Ну, как бы, всегда нужен баланс ...
Но, замечено (мной), те, кто пишет код в одиночку, мало уделяют внимания читаемости и поддерживаемости кода
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Я этот этап уже проходил. Потом были таблицы больше размера оперативки и извращения с mapped file, потом вернулся к обработчикам OnData.
Всякой задаче - свой инструмент
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Alexey Shumkin
Всякой задаче - свой инструмент
Ну я тоже очень давно ушёл от, например, использования TListView как юзают его обычно. Заполняя данными из списка, дублируя данные.
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Гараздо практичнее использовать виртуальные списки и тянуть данные когда нужно из единственного источника
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Плюс ко всему, можно модифицировать отображаемые данные находу
источник