Практикантроп
4827 / 2719 / 526
Регистрация: 23.09.2011
Сообщений: 5,778
|
|
1 | |
Сколько же реально ячеек в StringGrid ?25.07.2013, 10:58. Показов 791. Ответов 2
Метки нет (Все метки)
Раньше как-то не обращал внимания на особенности адресации внутри массивов; и вот на днях поднял тему про структуру байтовых массивов во временной памяти (ссылка). И вот снова столкнулся с парадоксальной для меня ситуацией... - кладу на форму компонент StringGrid из Боландовского набора. Казалось бы, его структура уже определена размерностью по умолчанию: 5х5 ячеек и по одной фиксированной колонке и строке. Теперь пробую записать произвольное число в несуществующую (.. я так думал) ячейку; и тут же считать из этой ячейки с размещением результата на форме... . Пишет и читает! Причем странности опять-таки связаны с магическим числом 2 в 20 степени, - если номер ячейки превышает это число (0хFFFFF и неважно, колонка это или столбец, или и то и другое), то ошибки не показывает, но вместо записанного числа возвращает пустоту. Если номер ячейки меньше 1048560 (0х100000-0х10), то возвращает правильное число. И только в диапазоне 16-и значений (0xFFFF0...0xFFFFF) вырабатывает исключение (Access Violation). Поверить, что создавая табличку Билдер резервирует в памяти мегабайт, мне сложно. Но ведь записанное число читается верно! Что это - проделки компилятора или какая-то непостижимая для меня мудрость создателей?
Добавлено через 15 минут ... но пришлось. Действительно: при записи в околомиллионную ячейку размер программы по мнению Диспетчера задач увеличился на 1 мегабайт, что опять-таки не добавило ясности... - одного байта для адресации начала строки (ячейки) явно недостаточно; кроме того размер увеличился после записи в ячейку, у которой околомиллионный номер И СТОЛБЦА, И СТРОКИ.
1
|
25.07.2013, 10:58 | |
Ответы с готовыми решениями:
2
StringGrid Цвет фона пустых ячеек и ячеек с текстом Возможность вручную писать данные в ячейки StringGrid и заполнение ячеек StringGrid данными из файла после нажатия кнопки Выделить программно массив ячеек в datagridview реально? StringGrid выравнивание записей в 1 столбе из 6 по левой стороне, реально ? |
Супер-модератор
|
|||||||||||
25.07.2013, 11:42 | 2 | ||||||||||
В реализации Грида сам черт ногу сломит. Единственное, что ясно - это то, что в ней (в реализации, я имею в виду), используются Sparse Lists, то есть, разреженные списки. Существует также ограничение (файл Grids.pas):
2
|
Практикантроп
4827 / 2719 / 526
Регистрация: 23.09.2011
Сообщений: 5,778
|
|
25.07.2013, 11:58 [ТС] | 3 |
Действительно; много странностей. Если пытаюсь читать из любой (кроме "запретных") ячейки, то размер программы в памяти не меняется. Увеличивается он лишь при записи в ячейку. И я пока не могу логически увязать размерность сетки и размер увеличения памяти. Вот если записываю в миллионную ячейку миллионного столбца - прирост около мегабайта; а если столбец уменьшаю до 0-го - то прирост вдвое меньше. То-есть в памяти после таких действий создается какая-то матрица, но по какому принципу - непонятно.
1
|
25.07.2013, 11:58 | |
25.07.2013, 11:58 | |
Помогаю со студенческими работами здесь
3
Сколько сайтов реально оптимизировать ПК за сколько реально возможно продать? Сколько запросов реально поднять? Сколько реально памяти на моей 8600GT? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |