Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
43 / 13 / 1
Регистрация: 20.08.2012
Сообщений: 788
1

MFC C++ работа с файлами

18.12.2013, 22:48. Показов 1721. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Очень нужно помогите!!
Мне нужно что бы в listcontrol выводилась информация из txt или аксеса(автоматический) или же это реализовать через нажатие на клавишу и база там загружалась(типа клавиша read, добавляющая инфу в list).
Потом еще что бы этот список можно было редактировать с помощью кнопки (редактировать и удалить).
Все это должно быть в MFC как реализовано по сути не важно через класс database,CStdioFile,CFile или fopen. Главное что бы работало. А то я перешарил инет, там примеры которые сам разобрать не могу, то одно не работает то другое.
Нашел вот такой пример, но как не пытался его запустить или переделать ни чего не получилось. При запуске ошибка, при переделке то не подключено то не так(вообщем я дуб в С++)
Я пробовал подогнать но вот((
Кликните здесь для просмотра всего текста
1>------ Построение начато: проект: ReadDB, Конфигурация: Debug Win32 ------
1> ReadDB.cpp
1>c:\users\guru\desktop\readdb_demo\readdb.cpp(52): warning C4996: 'CWinApp::Enable3dControls': CWinApp::Enable3dControls is no longer needed. You should remove this call.
1> c:\program files (x86)\microsoft visual studio 11.0\vc\atlmfc\include\afxwin.h(5361): см. объявление "CWinApp::Enable3dControls"
1> Создание кода...
1> Компиляция...
1> ReadDBDlg.cpp
1> Создание кода...
1>ReadDB.obj : warning LNK4075: не учитывается "/EDITANDCONTINUE" из-за спецификации "/SAFESEH"
1>ReadDBDlg.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall CReadDBDlg::OnLvnItemchangedListcontrol(struct tagNMHDR *,long *)" (?OnLvnItemchangedListcontrol@CReadDBDlg@@QAEXPAUtagNMHDR@@PAJ@Z)"
1>.\Debug\ReadDB.exe : fatal error LNK1120: неразрешенных внешних элементов: 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


m_ListControl - я так понял переменная того самого listcontrol (поле список)
void CReadDBDlg::ResetListControl() - это я так понял функция только с какими параметрами

Кликните здесь для просмотра всего текста

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 void CReadDBDlg::OnRead() 
{
    // TODO: Add your control notification handler code here
    CDatabase database;
    CString SqlString;
    CString sCatID, sCategory;
    CString sDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
    CString sDsn;
    CString sFile = "d:\\works\\ReadDB\\Test.mdb";
    // You must change above path if it's different
    int iRec = 0;   
    
    // Build ODBC connection string
    sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile);
    TRY
    {
        // Open the database
        database.Open(NULL,false,false,sDsn);
        
        // Allocate the recordset
        CRecordset recset( &database );
 
        // Build the SQL statement
        SqlString =  "SELECT CatID, Category "
                "FROM Categories";
 
        // Execute the query
        recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly);
        // Reset List control if there is any data
        ResetListControl();
        // populate Grids
        ListView_SetExtendedListViewStyle(m_ListControl,LVS_EX_GRIDLINES);
 
        // Column width and heading
        m_ListControl.InsertColumn(0,"Category Id",LVCFMT_LEFT,-1,0);
        m_ListControl.InsertColumn(1,"Category",LVCFMT_LEFT,-1,1);
        m_ListControl.SetColumnWidth(0, 120);
        m_ListControl.SetColumnWidth(1, 200);
 
        // Loop through each record
        while( !recset.IsEOF() )
        {
            // Copy each column into a variable
            recset.GetFieldValue("CatID",sCatID);
            recset.GetFieldValue("Category",sCategory);
 
            // Insert values into the list control
            iRec = m_ListControl.InsertItem(0,sCatID,0);
            m_ListControl.SetItemText(0,1,sCategory);
 
            // goto next record
            recset.MoveNext();
        }
        // Close the database
        database.Close();
    }
    CATCH(CDBException, e)
    {
        // If a database exception occured, show error msg
        AfxMessageBox("Database error: "+e->m_strError);
    }
    END_CATCH;
}
    
// Reset List control
void CReadDBDlg::ResetListControl()
{
    m_ListControl.DeleteAllItems();
    int iNbrOfColumns;
    CHeaderCtrl* pHeader = (CHeaderCtrl*)m_ListControl.GetDlgItem(0);
    if (pHeader)
    {
        iNbrOfColumns = pHeader->GetItemCount();
    }
    for (int i = iNbrOfColumns; i >= 0; i--)
    {
        m_ListControl.DeleteColumn(i);
    }
}

primer.rar
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.12.2013, 22:48
Ответы с готовыми решениями:

Не могу разобраться с .h файлами. MFC
Привет! Я создал проект Project с помощью MFC Wizard. Wizard автоматически создал файлы ProjectDoc.h и ProjectDoc.cpp. Добавил к...

MFC. Как организовать связь с файлами, чтоб их можно было выделить и удалить?
Есть ListControl и туда выводятся список файлов из папки. Как организовать связь с файлами, чтоб их можно было выделить и удалить?

Подскажите ссылку к классу для работы с файлами /типа class CFiles в MFC /
Можно конечно и самому написать, но не хочется изобретать велосипед.

1
43 / 13 / 1
Регистрация: 20.08.2012
Сообщений: 788
18.12.2013, 22:56  [ТС] 2
Пробовал так, но подчеркивает CKursSet. Я не знаю что это в инете не нашел!
C++
1
2
3
4
5
6
7
8
9
void CMFCApplication3Dlg::OnBnClickedButton1()
{
CDatabase db;
CKursSet rs(db);
CString strConnect;
strConnect.Format(_T("Driver={Microsoft Access Driver (*.mdb)};DBQ=%s"), <путь к базе>);
db.OpenEx(strConnect);
rs.Open();
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2013, 22:56
Помогаю со студенческими работами здесь

Работа в MFC
Всем привет. Кто может помочь с написанием программы вот такого типа...

Работа с мышью (MFC)
Добрый вечер! Подскажите, как сделать так, чтобы при зажатии клавиши мыши некоторое действие выполнялось до тех пор, пока клавиша не...

Работа с RichEdit в MFC
здравствуйте. Столкнулся с проблемой непонимания как реализовать желаемое: Есть MFC приложение, созданное на основе вкладок,...

API/MFC работа с графом
помогите пожалуйста найти ошибку или дописать недостающее. только недавно полез в апи и мфс,поэтому могу не до конца все понимать. написал...

Работа с модальным окном MFC
Скажите,пожалуйста, можно ли как-то организовать запись данных из модального окна в текстовый файл? Есть главное окно, есть...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class - средства для работы с неизменяемыми структурами данных, каждое из которых предлагает свой уникальный подход к решению этой задачи. История их появления весьма. . .
Создание производительны­­х API с Java и gRPC
Wired 04.03.2025
В разработке производительность и масштабируемость микросервисных приложений играют ключевую роль. Традиционные REST API, несмотря на свою популярность и простоту, не всегда способны обеспечить. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 знаменует собой значительный скачок в развитии Java, внося фундаментальные улучшения в производительность, безопасность и удобство разработки. Релиз включает множество революционых изменений,. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Современная блокчейн-разработка на Java предоставляет разработчикам широкий спектр возможностей. В отличие от Solidity, который ограничен экосистемой Ethereum, Java позволяет создавать как. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
Tестирование Pull Request в Kubernetes с помощью vCluster
stackOverflow 03.03.2025
При работе с микросервисной архитектурой критически важно обеспечить качественное тестирование каждого изменения перед его слиянием в основную кодовую базу. Однако тестирование Pull Request в. . .
Использование пакета Context в Golang
bytestream 03.03.2025
Управление параллельными процессами в современных приложениях - сложная задача, особенно когда речь идет о микросервисной архитектуре и распределенных системах. Пакет context в Go - это гибкое. . .
WebAssembly и Go: Работа с DOM и обработка ошибок
bytestream 03.03.2025
WebAssembly представляет собой технологию, позволяющую запускать низкоуровневый код в браузере практически на нативной скорости. Особенно интересные возможности открываются при использовании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru