Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 3
Регистрация: 04.09.2013
Сообщений: 12

Занести данные из файла в таблицу ( List Control )

04.09.2013, 14:17. Показов 1798. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно надо извлечь данные из файла и перенести их в таблицу. В файл данные заношу сам же вот таким способом:

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CString clipboard_data ;
    int     rows ;
    int     columns ;
    CString item ;
 
    rows = m_listCtrl.GetItemCount() ;
    columns = m_listCtrl.GetHeaderCtrl()->GetItemCount() ;
 
    for (int j = 0 ; j < rows ; j++)
        {
        for (int k = 0 ; k < columns ; k++)
            {           
                clipboard_data += "\t\1" ; // табуляция
            item = m_listCtrl.GetItemText(j, k) ;
            clipboard_data += item ;
            }
        clipboard_data += "\r\n" ; // конец строки
        }
 
    fprintf(f,"%s\t\n",clipboard_data);
После каждой ячейки пишем символ что бы потом записывать с его помощью опять в таблицу..
C++
1
2
3
4
5
6
7
8
9
10
  m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
   m_listCtrl.InsertColumn(0, "Номер №", LVCFMT_LEFT, 60);
   m_listCtrl.InsertColumn(1, "Наименование", LVCFMT_LEFT, 120);
   m_listCtrl.InsertColumn(2, "Обозначение", LVCFMT_LEFT, 120);
   m_listCtrl.InsertColumn(3, "Изменение", LVCFMT_LEFT, 110);
   m_listCtrl.InsertColumn(4, "Файл", LVCFMT_LEFT, 100);
   m_listCtrl.InsertColumn(5, "Размер", LVCFMT_LEFT, 70);
   m_listCtrl.InsertColumn(6, "Дата", LVCFMT_LEFT, 100);
   m_listCtrl.InsertColumn(7, "Время", LVCFMT_LEFT, 80);
   m_listCtrl.InsertColumn(8, "Прим.", LVCFMT_LEFT, 100);
вот собственно и таблица.
а вот как с файла считать данные я чот недокумкаю.... понимаю что надо по символьно читать файл пока не наткнемся на этот иероглиф и заносим это в первую ячейку, потом пропускаем этот символ и начинаем писать во 2 ячейку пока не наткнемся на следующий символ.

Добавлено через 16 минут
если заменить
C++
1
clipboard_data += "\t\1" ; // табуляция
на
C++
1
clipboard_data += "\t#" ; // табуляция
в файл сохраняет:
" #123 #123 #123 #123 #123.ico #1078 #14.08.2013 #13:44 #123

#123 #123 #123 #123 #123.rc2 #395 #14.08.2013 #13:44 #123

#123 #123 #123 #123 #res.txt #126 #04.09.2013 #14:02 #123
"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2013, 14:17
Ответы с готовыми решениями:

[WPF] Вывести данные из list в Chart Control
Добрый день, столкнулся с проблемой вывода данных на график Chart Control (Раньше не имел дела с графиками). Нужно вывести данные из...

Занести данные в таблицу
Появился новый вопрос: есть текстбоксы на форме, у них тип данных varchar, как мне преобразовать эти данные таким образом, чтобы занести в...

Занести данные в другую таблицу
привет всем. у меня такой вопрос???????????? у меня в таблице есть два поля: 1 (дата возврата) и 2 (фактическая дата возврата). можно...

2
0 / 0 / 3
Регистрация: 04.09.2013
Сообщений: 12
05.09.2013, 16:26  [ТС]
Или может подскажите более оптимальный способ записи этих данных в файл, что бы потом было удобнее заносить их обратно в таблицу.
0
0 / 0 / 3
Регистрация: 04.09.2013
Сообщений: 12
11.09.2013, 10:44  [ТС]
Так заносится но почему то пропускает строки, пишет через одну начиная с 3 строки и так далее....
В чем у меня ошибка?
str получаю через fgets.
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
char *pointer;
    int k=0;
    LV_ITEM         lvItem;
    lvItem.mask = LVIF_TEXT;
 
    int j=0;
 
 
    pointer=strtok(str, "#"); 
    lvItem.iItem = 0;
    lvItem.iSubItem = 0;
    lvItem.pszText = pointer;
    m_listCtrl.InsertItem(&lvItem);
                              
            for(k;k<elem;k++)
        {   
 
        pointer=strtok(NULL, "#");
        lvItem.iSubItem = k;
        lvItem.pszText = pointer;
        m_listCtrl.SetItem(&lvItem);
            if(k!=0 && k%8==0)
            {
                j++;
                pointer=strtok(NULL, "#"); 
                lvItem.iItem = j;
                lvItem.iSubItem = 0;
                lvItem.pszText = pointer;
                m_listCtrl.InsertItem(&lvItem);
 
 
                for(int d=1;d<=9;d++)
                    {
                        pointer=strtok(NULL, "#");
                        lvItem.iSubItem = d;
                        lvItem.pszText = pointer;
                        m_listCtrl.SetItem(&lvItem);
                    }//for(d=1;d<10;d++)    
            }//if(k!=0 && k%8==0)
        }//for(k;k<elem;k++)
Добавлено через 19 часов 34 минуты
Решил проблему
Записываю данные в файл таким способом :
C++
1
2
3
4
5
6
7
8
9
10
    for (int j = 0 ; j < rows ; j++)
        {
        for (int k = 0 ; k < columns ; k++)
            {
                clipboard_data += " #" ; // разделение ячеек
            item = m_listCtrl.GetItemText(j, k) ;
            clipboard_data += item ;
            }
        clipboard_data +=  " #"; //"\r\n"  // конец строки в таблице
        }

Далее считываю с файла данные таким способом:
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
    char *pointer;
    int k=0;
    LV_ITEM         lvItem;
    lvItem.mask = LVIF_TEXT;
    int j=0;
 
    pointer=strtok(str, "#"); 
    lvItem.iItem = 0;
    lvItem.iSubItem = 0;
    lvItem.pszText = pointer;
    m_listCtrl.InsertItem(&lvItem);
                              
            for(k;k<elem;k++)
        {   
        pointer=strtok(NULL, "#");
        lvItem.iItem = 0;
        lvItem.iSubItem = k;
        lvItem.pszText = pointer;
        m_listCtrl.SetItem(&lvItem);
            if( k!=0  && k%9==0)
            {
                j++;                
                pointer=strtok(NULL, "#"); 
                lvItem.iItem = j;
                lvItem.iSubItem = 0;
                lvItem.pszText = pointer;
                m_listCtrl.InsertItem(&lvItem);
                for(int d=1;d<9;d++)
                    {
                        pointer=strtok(NULL, "#");
                        lvItem.iItem = j;
                        lvItem.iSubItem = d;
                        lvItem.pszText = pointer;
                        m_listCtrl.SetItem(&lvItem);
                        k++;
                    }//for(int d=1;d<9;d++)
            }//if(k!=0 && k%9==0)               
        }//for(k;k<elem;k++)
Если кто то может предложить другой способ более оптимальный то прошу не стесняйтесь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2013, 10:44
Помогаю со студенческими работами здесь

Занести данные во ременную таблицу
Здравствуйте, помогите пожалуйста, я не давно работаю в SQL, создал запрос, который заносит данные во временную таблицу, т.е. должно быть...

Как занести данные в таблицу?
Добрый вечер! Помогите пожалуйста! как занести данные в таблицу с помощью JavaScript или JQuery Есть такие поля куда вводятся ФИО и...

Занести данные из запроса в таблицу
Вопрос такой. Можно ли как-нибудь из запроса(запрос на подсчет данных) занести данные в таблицу? т.е. я посчитано количество книг у каждого...

Как занести данные в таблицу dataGridView
Пользователь вводит имя, год рождение и баллы. Они должны попасть в 3 столбца. Помогите плиз!!!!

Как из checkedListBox занести данные в таблицу БД?
Как из checkedListBox занести данные в таблицу БД? Вообще ума не приложу. Ведь элементы добавляются вручную, а не берутся из БД. Скажите,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru