0 / 0 / 3
Регистрация: 04.09.2013
Сообщений: 12

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

04.09.2013, 14:17. Показов 1809. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru