Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
6 / 6 / 0
Регистрация: 01.08.2012
Сообщений: 53

Долгое заполнение Stringgrid-а данными

21.02.2019, 21:51. Показов 1570. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех.
Присваиваю ячейкам stringgrid'a значения из массива char (размер массива динамический) вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int i = 0; i < filesize_main; i++)
//for (int i = 0; i < 160; i++)
{
StringGrid1->Rows[row]->Strings[count_col] = " "+IntToHex((unsigned char)array[i], 2);
if (count_col < 15)
{
   count_col++;
}
else
  {
 count_col = 0;
 row++;
  }
}
дело в том, что весь процесс занимает много времени и много ресурсов, а если попробовать заполнить ещё 1 stringgrid, то программа вываливается с out of memory (памяти 8gb).
Есть ли другие варианты?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2019, 21:51
Ответы с готовыми решениями:

Возможность вручную писать данные в ячейки StringGrid и заполнение ячеек StringGrid данными из файла после нажатия кнопки
Здравствуйте! Помогите, пожалуйста. Мне необходимо сделать следующее: реализовать возможность вручную писать данные в ячейки StringGrid...

Заполнение StringGrid данными
Доброго вам. Столкнулся с проблемой которую решить пока не удается. В моей таблице строго ограниченое кол-во столбцов, но кол-во строк...

Заполнение данными таблицы StringGrid через Edit
Здравствуйте Ув. у меня такой вопрос: у меня на форме 2 Edit, 1Button, StringGrid, мне нужно через 2 эдита ввести данные в таблицу, при...

10
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
21.02.2019, 22:40
Alexey_tmb,
C++
1
StringGrid1->Cells[count_col][row] = " "+String(IntToHex((unsigned char)array[i], 2));
создать три цикла по колонкам и строкам и считывания массива. и вставлять значения массива .
будет почти мгновенно создана таблица.
1
6 / 6 / 0
Регистрация: 01.08.2012
Сообщений: 53
21.02.2019, 22:43  [ТС]
Цитата Сообщение от lifeforce Посмотреть сообщение
создать три цикла по колонкам и строкам и считывания массива
не совсем ясно...
можно пример (для моего случая)?
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
21.02.2019, 23:17
Alexey_tmb,
из примера совсем непонятно какая размерность таблицы и массива
вот пример
C++
1
2
3
for (int count_col = 0; count_col < StringGrid1->ColCount; count_col++)
 for (int i = 0; i < filesize_main; i++)
 StringGrid1->Cells[count_col][filesize_main] = " "+String(IntToHex((unsigned char)array[i], 2));
1
6 / 6 / 0
Регистрация: 01.08.2012
Сообщений: 53
21.02.2019, 23:22  [ТС]
в строке 16 ячеек, а строк:
StringGrid1->RowCount = (filesize_main / 16) + 1;//количество строк = количество байт в файле/16
размер массива array, количество байт в файле (файл бинарник)
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
21.02.2019, 23:32
заполнение таблицы по горизонтали?(судя из примера)
1
6 / 6 / 0
Регистрация: 01.08.2012
Сообщений: 53
21.02.2019, 23:36  [ТС]
Цитата Сообщение от lifeforce Посмотреть сообщение
по вертикали?
по горизонтали до 15 (от 0), затем переход на новую строку
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
21.02.2019, 23:45
Лучший ответ Сообщение было отмечено Alexey_tmb как решение

Решение

C++
1
2
3
4
5
6
7
8
 int i = 1;
 StringGrid1->RowCount = (filesize_main / 16) + 1;//количество строк = количество байт в файле/16
 for (int row = 0; row < StringGrid1->RowCount; row++)
 for (int count_col = 0; count_col < StringGrid1->ColCount; count_col++)
  {
 StringGrid1->Cells[count_col][row] = " "+String(IntToHex((unsigned char)array[i], 2));
 i++;
  }
Добавлено через 15 секунд
C++
1
2
3
4
5
6
7
8
 int i = 1;
 StringGrid1->RowCount = (filesize_main / 16) + 1;//количество строк = количество байт в файле/16
 for (int row = 0; row < StringGrid1->RowCount; row++)
 for (int count_col = 0; count_col < StringGrid1->ColCount; count_col++)
  {
 StringGrid1->Cells[count_col][row] = " "+String(IntToHex((unsigned char)array[i], 2));
 i++;
  }
1
6 / 6 / 0
Регистрация: 01.08.2012
Сообщений: 53
21.02.2019, 23:54  [ТС]
lifeforce, Благодарю, а почему предложенный Вами вариант более корректен (если возможно так выразиться)?
p.s. отображает (заполняет) в stringgrid 5292723 байт порядка 6 секунд.
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
22.02.2019, 00:01
Цитата Сообщение от Alexey_tmb Посмотреть сообщение
вариант более корректен
в примере заполнения ячеек StringGrid1->Cells[col][row] идет прямая запись в отдельную указанную ячейку.
с в примере StringGrid1->Rows[row]->Strings[col] идет запись целой строки , но для этого нужен разделитель.
так как его нет будет бесконечно перезаписывать строку пока не переполнится память.
1
6 / 6 / 0
Регистрация: 01.08.2012
Сообщений: 53
22.02.2019, 00:03  [ТС]
lifeforce, Благодарю Вас за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2019, 00:03
Помогаю со студенческими работами здесь

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...

Слишком долгое заполнение дерева значений
Добрый день, такая проблема, нужно заполнить дерево значений при открытии, но оно заполняется в раз 10-15 медленнее, чем на обычной форме,...

Автоматическое заполнение ячеек данными, взятыми из одной ячейки с динамическими данными
Добрый день! Подскажите, есть ли решение моей задачи: В одной и той же ячейке постоянно (ежесекундно) меняется число (данные...

Долгое заполнение Tlistbox - Список из 30 строк грузится 12-14 секунд
Пишу программку на Android, для открытия файлов нужен файловый менеджер. получаю список папок и файлов так: var folders, files:...

Управление данными StringGrid
Hello!!! Нужна помощь!!! Задание такое нужно определить количество пассажиров, имеющих более трех вещей. Я сделал так чтоб программа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru