実現したいこと
CSVファイルから読み込んだ内容を配列に格納して、リストコントロールに表示させたいです。
今の状態
CSVファイルから配列にデータを格納するところまでは、デバックしてみて確認しました。
ただCSV内の改行箇所でデータの順番がおかしくなってしまっています。
1行目の最後の要素と、2行目の最初の要素がリストコントロールの同じ場所に入力されてしまう。
該当のソースコード
C++
1// CSVファイルからデータを読み込んで、リストコントロールへ入力 2void CBMIviewerDlg::OnBnClickedButton_ReadCSV() 3{ 4 // ファイルパスを参照する処理 5 TCHAR FilePath[256]; 6 CEdit *pFilePath = ( CEdit * ) GetDlgItem( IDC_EDIT6 ); 7 int nLen1 = pFilePath->GetWindowText( FilePath, 256 ); 8 9 FilePath[nLen1] = _T( '\0' ); 10 11 // 参照したファイルの読み取り 12 CStdioFile input; 13 input.Open( FilePath, CFile::modeReadWrite ); 14 int FileSize = input.GetLength(); 15 char chBufRead[1300]; 16 17 input.ReadString( chBufRead, FileSize ); 18 CString strData = chBufRead; 19 20 CArray<CString, CString> arrData; 21 22 int nStart = 0; 23 int nPos = -1; 24 25 int nItem = m_ListCtrl.GetItemCount(); 26 27 CString restoken; 28 nPos = strData.Find( ',', nStart ); 29 30 31 while( -1 < nPos ){ 32 restoken = strData.Mid( nStart, nPos - nStart ); 33 arrData.Add( restoken ); 34 35 nStart = nPos + 1; 36 nPos = strData.Find( ',', nStart ); 37 38 if( -1 == nPos ){ 39 restoken = strData.Mid( nStart ); 40 arrData.Add( restoken ); 41 42 for( int n = 0; n < 10; n++ ){ 43 nItem = m_ListCtrl.InsertItem( nItem, arrData[n * 8], n ); 44 m_ListCtrl.SetItem( nItem, 1, LVIF_TEXT, arrData[n * 8 + 1], n, NULL, NULL, NULL ); 45 m_ListCtrl.SetItem( nItem, 2, LVIF_TEXT, arrData[n * 8 + 2], n, NULL, NULL, NULL ); 46 m_ListCtrl.SetItem( nItem, 3, LVIF_TEXT, arrData[n * 8 + 3], n, NULL, NULL, NULL ); 47 m_ListCtrl.SetItem( nItem, 4, LVIF_TEXT, arrData[n * 8 + 4], n, NULL, NULL, NULL ); 48 m_ListCtrl.SetItem( nItem, 5, LVIF_TEXT, arrData[n * 8 + 5], n, NULL, NULL, NULL ); 49 m_ListCtrl.SetItem( nItem, 6, LVIF_TEXT, arrData[n * 8 + 6], n, NULL, NULL, NULL ); 50 m_ListCtrl.SetItem( nItem, 7, LVIF_TEXT, arrData[n * 8 + 7], n, NULL, NULL, NULL ); 51 52 } 53 } 54 } 55}
補足情報(FW/ツールのバージョンなど)
visual studioのバージョンは2022です。
MFCのダイアログベース、
スタティックライブラリでMFCを使用
マルチバイト文字セット
を利用しています。

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/08/04 03:19
2022/08/04 03:26 編集
2022/08/04 07:44