1

csvファイルの読み取りに問題があります。私はmfcにかなり慣れていないので、誰かが私を助けてくれることを願っています。だから...私はボタンを持っていて、それでファイルダイアログを開いてcsvファイルを選択します。csvファイルには、色と位置情報(区切り文字は;)が付いたさまざまな形状(長方形、楕円、多角形)があります。今、私はこの情報をリストボックスに表示する必要があります、そしてここで私は立ち往生しています。私はこれまでに(コード)を取得しました...そして私はそれが大丈夫かどうかわかりません、そして私は良い助けを見つけることができないので誰かが私にヒントを与えることを願っています。

void CDialogDrawing::OnBnClickedButton2()
{

      TCHAR filtri[] = _T("CSV files (*.csv)|*.csv||"); 
      CString path; 

      CFileDialog dlg(TRUE, _T("csv"), _T("*.csv"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, filtri);
      dlg.m_ofn.lpstrTitle = _T("Open...");

      if(dlg.DoModal() == IDOK) //OK
      {
         path = dlg.GetPathName();
         //
         CStdioFile readFile;
         CFileException fileException;
         CString strLine;

         if(readFile.Open(path, CFile::modeRead, &fileException))
         {
             while (readFile.ReadString(strLine));
             {
                  seznamLikov.AddString(strLine);
             }
         }
         else
         {
             CString strErrorMsg;
             strErrorMsg.Format(_T("Can't open file %s , error : %u"), path, fileException.m_cause);
             AfxMessageBox(strErrorMsg);
    }
    readFile.Close();
 }
 }
4

1 に答える 1

1

後のセミコロンwhile

while (readFile.ReadString(strLine));
{
    seznamLikov.AddString(strLine);
}

次のように削除します。

while (readFile.ReadString(strLine)) {}

{
    seznamLikov.AddString(strLine);
}

意味AddString()は、失敗した後、一度だけ呼び出されReadString()ます。

于 2013-01-07T21:35:05.950 に答える