質問編集履歴

3

CSV書き込み・読み込みの処理コードを書きました。

2022/07/30 13:45

投稿

don
don

スコア10

test CHANGED
File without changes
test CHANGED
@@ -8,69 +8,37 @@
8
8
  使い方がわからず、モヤモヤしています。
9
9
 
10
10
  ```C++
11
- // リストコントロールの初期化(OnInitDlg
11
+ // CSVファイルにリストコントロールの内容を書き込む
12
+ void CBMIviewerDlg::OnBnClickedButton_OutputListCtrlToCSV()
13
+ {
12
- // スタイルの追加
14
+ CStdioFile output;
15
+ output.Open( "G:\\DemoPatientData.csv", CFile::modeReadWrite | CFile::modeCreate | CFile::modeNoTruncate );
16
+ output.SeekToEnd();
13
17
 
14
- m_ListCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT/*1行全体を選択*/ | LVS_EX_GRIDLINES/*線の表示*/ );
18
+ for( int k = 0; k < m_arrPatientData.size(); k++ ){
15
19
 
16
- // ヘッダー情報を追加
17
- m_ListCtrl.InsertColumn( 0, "NO.", LVCFMT_CENTER, 60 );
18
- m_ListCtrl.InsertColumn( 1, "氏名", LVCFMT_CENTER, 60 );
19
- m_ListCtrl.InsertColumn( 2, "性別", LVCFMT_CENTER, 40 );
20
- m_ListCtrl.InsertColumn( 3, "身長", LVCFMT_CENTER, 60/*幅*/ );
21
- m_ListCtrl.InsertColumn( 4, "体重", LVCFMT_CENTER, 60 );
22
- m_ListCtrl.InsertColumn( 5, "BMI", LVCFMT_CENTER, 60 );
23
- m_ListCtrl.InsertColumn( 6, "肥満度", LVCFMT_CENTER, 60 );
24
-
25
- // 追加する処理のボタンイベント
26
- void CBMIviewerDlg::OnBnClickedButton_RegistData()
27
- {
28
- m_nNumber += 1;
20
+ if( 0 != k
29
- CString strNumber;
30
- strNumber.Format( "%03d", m_nNumber);
31
-
32
- char chBuffer[100];
33
- m_EditName.GetWindowTextA( chBuffer, 5 );
34
- CString strName;
35
- strName.Format( chBuffer );
36
-
37
- if( TRUE == m_RadioMan.GetState() ){
21
+ && 6 * k == m_arrPatientData.size() - 1 ){
22
+ output.WriteString( m_arrPatientData[k] + "\n" );
23
+ }
24
+ else{
38
- m_RadioMan.GetWindowTextA( chBuffer, 3 );
25
+ output.WriteString( m_arrPatientData[k] + "," );
26
+ }
39
27
  }
40
28
 
41
- if( TRUE == m_RadioWoman.GetState() ){
42
- m_RadioWoman.GetWindowTextA( chBuffer, 3 );
29
+ output.Close();
43
- }
44
30
 
45
- CString strSex;
31
+ }
46
- strSex.Format( chBuffer );
47
32
 
33
+ // CSVファイルからデータを読み込んで、リストコントロールへ入力
48
- m_EditHeight.GetWindowTextA( chBuffer, 5 );
34
+ void CBMIviewerDlg::OnBnClickedButton_ReadCSV()
35
+ {
49
- CString strHeight;
36
+ CStdioFile input;
37
+ input.Open( "G:\\PatientData.csv", CFile::modeReadWrite );
50
- strHeight.Format( chBuffer );
38
+ char chBufRead[1024];
51
-
52
- m_EditWeight.GetWindowTextA( chBuffer, 5 );
39
+ input.Read( chBufRead, sizeof( chBufRead ) );
53
- CString strWeight;
40
+
54
- strWeight.Format( chBuffer );
55
-
56
- m_EditBMI.GetWindowTextA( chBuffer, 5 );
57
- CString strBMI;
58
- strBMI.Format( chBuffer );
41
+ AfxMessageBox( chBufRead );
59
-
60
- m_EditDegreeOfFatness.GetWindowTextA( chBuffer, 5 );
61
- CString strDegreeOfFatness;
62
- strDegreeOfFatness.Format( chBuffer );
63
-
64
- // 行の追加
65
- int nItem = m_ListCtrl.GetItemCount();
66
-
67
- nItem = m_ListCtrl.InsertItem( nItem, strNumber, 0 );
68
- m_ListCtrl.SetItem( nItem, 1, LVIF_TEXT, strName, 0, NULL, NULL, NULL );
69
- m_ListCtrl.SetItem( nItem, 2, LVIF_TEXT, strSex, 0, NULL, NULL, NULL );
70
- m_ListCtrl.SetItem( nItem, 3, LVIF_TEXT, strHeight, 0, NULL, NULL, NULL );
71
- m_ListCtrl.SetItem( nItem, 4, LVIF_TEXT, strWeight, 0, NULL, NULL, NULL );
72
- m_ListCtrl.SetItem( nItem, 5, LVIF_TEXT, strBMI, 0, NULL, NULL, NULL );
73
- m_ListCtrl.SetItem( nItem, 6, LVIF_TEXT, strDegreeOfFatness, 0, NULL, NULL, NULL);
74
42
  }
75
43
  ```
76
44
 

2

変数名

2022/07/28 00:14

投稿

don
don

スコア10

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
  m_ListCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT/*1行全体を選択*/ | LVS_EX_GRIDLINES/*線の表示*/ );
15
15
 
16
16
  // ヘッダー情報を追加
17
- m_ListCtrl.InsertColumn( 0, "患者NO.", LVCFMT_CENTER, 60 );
17
+ m_ListCtrl.InsertColumn( 0, "NO.", LVCFMT_CENTER, 60 );
18
18
  m_ListCtrl.InsertColumn( 1, "氏名", LVCFMT_CENTER, 60 );
19
19
  m_ListCtrl.InsertColumn( 2, "性別", LVCFMT_CENTER, 40 );
20
20
  m_ListCtrl.InsertColumn( 3, "身長", LVCFMT_CENTER, 60/*幅*/ );

1

リストコントロールの初期化、データの追加部分の処理のコードを追加しました!

2022/07/27 23:55

投稿

don
don

スコア10

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,73 @@
6
6
  MFCでのファイルの入出力はこのクラスを使う!などあれば教えていただきたいです。
7
7
  CFileとかCMFCListCtrlとかなんでしょうか?
8
8
  使い方がわからず、モヤモヤしています。
9
+
10
+ ```C++
11
+ // リストコントロールの初期化(OnInitDlg内)
12
+ // スタイルの追加
13
+
14
+ m_ListCtrl.SetExtendedStyle( LVS_EX_FULLROWSELECT/*1行全体を選択*/ | LVS_EX_GRIDLINES/*線の表示*/ );
15
+
16
+ // ヘッダー情報を追加
17
+ m_ListCtrl.InsertColumn( 0, "患者NO.", LVCFMT_CENTER, 60 );
18
+ m_ListCtrl.InsertColumn( 1, "氏名", LVCFMT_CENTER, 60 );
19
+ m_ListCtrl.InsertColumn( 2, "性別", LVCFMT_CENTER, 40 );
20
+ m_ListCtrl.InsertColumn( 3, "身長", LVCFMT_CENTER, 60/*幅*/ );
21
+ m_ListCtrl.InsertColumn( 4, "体重", LVCFMT_CENTER, 60 );
22
+ m_ListCtrl.InsertColumn( 5, "BMI", LVCFMT_CENTER, 60 );
23
+ m_ListCtrl.InsertColumn( 6, "肥満度", LVCFMT_CENTER, 60 );
24
+
25
+ // 追加する処理のボタンイベント
26
+ void CBMIviewerDlg::OnBnClickedButton_RegistData()
27
+ {
28
+ m_nNumber += 1;
29
+ CString strNumber;
30
+ strNumber.Format( "%03d", m_nNumber);
31
+
32
+ char chBuffer[100];
33
+ m_EditName.GetWindowTextA( chBuffer, 5 );
34
+ CString strName;
35
+ strName.Format( chBuffer );
36
+
37
+ if( TRUE == m_RadioMan.GetState() ){
38
+ m_RadioMan.GetWindowTextA( chBuffer, 3 );
39
+ }
40
+
41
+ if( TRUE == m_RadioWoman.GetState() ){
42
+ m_RadioWoman.GetWindowTextA( chBuffer, 3 );
43
+ }
44
+
45
+ CString strSex;
46
+ strSex.Format( chBuffer );
47
+
48
+ m_EditHeight.GetWindowTextA( chBuffer, 5 );
49
+ CString strHeight;
50
+ strHeight.Format( chBuffer );
51
+
52
+ m_EditWeight.GetWindowTextA( chBuffer, 5 );
53
+ CString strWeight;
54
+ strWeight.Format( chBuffer );
55
+
56
+ m_EditBMI.GetWindowTextA( chBuffer, 5 );
57
+ CString strBMI;
58
+ strBMI.Format( chBuffer );
59
+
60
+ m_EditDegreeOfFatness.GetWindowTextA( chBuffer, 5 );
61
+ CString strDegreeOfFatness;
62
+ strDegreeOfFatness.Format( chBuffer );
63
+
64
+ // 行の追加
65
+ int nItem = m_ListCtrl.GetItemCount();
66
+
67
+ nItem = m_ListCtrl.InsertItem( nItem, strNumber, 0 );
68
+ m_ListCtrl.SetItem( nItem, 1, LVIF_TEXT, strName, 0, NULL, NULL, NULL );
69
+ m_ListCtrl.SetItem( nItem, 2, LVIF_TEXT, strSex, 0, NULL, NULL, NULL );
70
+ m_ListCtrl.SetItem( nItem, 3, LVIF_TEXT, strHeight, 0, NULL, NULL, NULL );
71
+ m_ListCtrl.SetItem( nItem, 4, LVIF_TEXT, strWeight, 0, NULL, NULL, NULL );
72
+ m_ListCtrl.SetItem( nItem, 5, LVIF_TEXT, strBMI, 0, NULL, NULL, NULL );
73
+ m_ListCtrl.SetItem( nItem, 6, LVIF_TEXT, strDegreeOfFatness, 0, NULL, NULL, NULL);
74
+ }
75
+ ```
9
76
 
10
77
  ### 試したこと
11
78
  C++の入門レベルは一通り学習済みのため、ofstreamなどを使おうと試みましたが、