Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12

vector и grid

15.10.2013, 00:33. Показов 2111. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Вопрос не совсем по БД, но тема очень близкая, поэтому задаю вопрос в этой ветке.

Есть вектор (STL) структур, достаточно большой (600000 записей, структуры ~ 2К каждая, в памяти около гигабайта).
Использовать какую-то БД возможности нет по ряду причин.
Хочется используя какой-нибудь из гридов получить возможность просматривать/редактировать этот вектор.

Как я понял, StringGrid требует чтобы все записи были в него скопированы, не очень хорошее решение, оперативка на грани, если начнется свопирование, производительность просядет, а она критична.
Вариант с реализацией собственного DataSet кажется несколько трудоемким.

Нет ли каких-то простых решений на данную тему? Может быть есть готовые компоненты для связывания векторов с гридами?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2013, 00:33
Ответы с готовыми решениями:

Возможно ли задать в XAML число строк и столбцов Grid сразу, без исп <Grid.ColumnDefinitions> и <Grid.RowDefinnitions>?
Возможно ли задать в XAML число строк и столбцов Grid сразу, без исп &lt;Grid.ColumnDefinitions&gt; и &lt;Grid.RowDefinnitions&gt;?

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt;...

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>)
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

4
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
15.10.2013, 09:01
Отображай не все сразу, а только одну или несколько структур.
0
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
15.10.2013, 10:34  [ТС]
Это равносильно написанию своего компонента. Не, решение понятное, наверняка работоспособное.
Но я пока оставляю его напоследок.

Мне кажется задача довольно распространенная, не хотелось бы изобрести велосипед.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
15.10.2013, 10:59
Лучший ответ Сообщение было отмечено volvo как решение

Решение

vantfiles, виртуальный TDrawGrid устроит? То есть, как-то вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
struct TData
{
    int f_1;
    int f_2;
    int f_3;
    int f_4;
    TData(int p1, int p2, int p3, int p4) : f_1(p1), f_2(p2), f_3(p3), f_4(p4) {}
};
 
std::vector<TData> v;
 
// ...
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    for(int i = 0; i < 100; i++)
    {
        v.push_back(TData(i, i, i, i)); // Ну, это - для теста ...
    }
    DrawGrid1->RowCount = 100;
}
 
void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect,
          TGridDrawState State)
{
    TData *p = &v[ARow];
    String s;
    switch(ACol)
    {
        case 0 : s = IntToStr(p->f_1); break;
        case 1 : s = IntToStr(p->f_2); break;
        case 2 : s = IntToStr(p->f_3); break;
        case 3 : s = IntToStr(p->f_4); break;
    }
    DrawGrid1->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2, s);
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::DrawGrid1SetEditText(TObject *Sender, int ACol, int ARow,
          const UnicodeString Value)
{
    TData *p = &v[ARow];
    switch(ACol)
    {
        case 0 : p->f_1 = StrToIntDef(Value, 0); break;
        case 1 : p->f_2 = StrToIntDef(Value, 0); break;
        case 2 : p->f_3 = StrToIntDef(Value, 0); break;
        case 3 : p->f_4 = StrToIntDef(Value, 0); break;
    }
}
, всё по-прежнему хранится в памяти, отображается только то, что должно отображаться в данный момент, все изменения (при Options->goEditing = true) заносятся прямо в std::vector...
1
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
15.10.2013, 11:49  [ТС]
Только я хотел спросить, а как грид поймет, сколько у него строк, как вы сделали правку, UI

Ну - кажется это именно то, что мне нужно. Структуру я менять не могу - она внешняя, но это уже детали.
Я просто думал, что с дравгридом я получу кучу проблем, но из примера видно, что все предельно прозрачно.

Пойду реализовывать, спасибо вам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.10.2013, 11:49
Помогаю со студенческими работами здесь

Не могу прикрутить bindingnavigator к grid, которая связана с другой grid
вот код, если бы grid не были связаны то и проблем бы не было. а тут никак не получается. нужно чтобы binding навигатор относился к...

А кроме Data Grid есть еще какой-нибудь Grid?
Вопрос конечно тупой, но что-то смотрю и не вижу. Или может не туда смотрю. Одним словом торможу. Опять же раньше был в VB такой...

CSS grid (display: grid) как расположить блоки?
Пожалуйста подскажите как мне с помощью display grid рассположить блоки как на скриншоте

В стиле для элемента Grid использовать другой Grid
Пытаюсь создать вот такой стиль для Grid &lt;Style x:Key=&quot;CrosswalkHorizontal&quot; TargetType=&quot;Grid&quot;&gt; &lt;Setter...

Как изменить Grid.Row и Grid.Column в элементе
как переместить кнопку из одной ячейки в другую при нажатии на нее или как поменять содержимое ячеек местами также при нажатии на кнопку ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью 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 и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru