1. 程式人生 > 其它 >檔案操作 讀取、儲存設定檔案(.cfg)

檔案操作 讀取、儲存設定檔案(.cfg)

bool CScaleModelManage::LoadConfigure(int iCam)
{

  BOOL bRtn = TRUE;
  CFileStore m_File;
  CString strFile;

  //保留給以前的標定資料讀寫用
  strFile.Format("xxx%d.cfg",iCam);
  if (!m_File.Open(strFile.GetString(), OpenFlag::load))
  {
    return false;
  }

  //讀取曝光時間

  m_vecCGdiRect[iCam].clear();
  unsigned int nCGdiRect;
  bRtn &= (BOOL)m_File.Read(&nCGdiRect, sizeof(nCGdiRect));
  for (int i = 0; i < nCGdiRect; i++)
  {
    shared_ptr <CGdiRect> m_GdiRect = make_shared<CGdiRect>();
    m_vecCGdiRect[iCam].push_back(m_GdiRect);
    bRtn &= (BOOL)m_vecCGdiRect[iCam][i]->Exchange(m_File);
  }

  m_vecLinePoint[iCam].clear();
  unsigned int nPoints;
  bRtn &= (BOOL)m_File.Read(&nPoints, sizeof(nPoints));
  for (int i = 0; i < nPoints; i++)
  {
    int nMac = m_nMacIndex;
    int nCam = iCam;
    int nFlag = 0;
    int nGroup = 0;
    int nOrder = 0;
    double dLength = 0.0;
    double dImgX = 0.0;
    double dImgY = 0.0;

    bRtn &= m_File.Read(&dImgX, sizeof(dImgX));
    bRtn &= m_File.Read(&dImgY, sizeof(dImgY));

    shared_ptr <Point2d> CurPoint = make_shared<Point2d>();
    CurPoint->dImgX = dImgX;
    CurPoint->dImgY = dImgY;
    m_vecLinePoint[iCam].push_back(CurPoint);
  }
  m_File.Close();
  return bRtn;
}

bool CScaleModelManage::SaveConfigure(int iCam)
{
  BOOL bRtn = TRUE;
  CFileStore m_File;
  CString strFile;

  //保留給以前的標定資料讀寫用
  strFile.Format("xxx%d.cfg", iCam);
  if (!m_File.Open(strFile.GetString(), OpenFlag::save))
  {
    return false;
  }

  //讀取曝光時間

  unsigned int nCGdiRect = m_vecCGdiRect[iCam].size();
  bRtn &= (BOOL)m_File.Write(&nCGdiRect, sizeof(nCGdiRect));
  for (int i = 0; i < nCGdiRect; i++)
  {
    bRtn &= (BOOL)m_vecCGdiRect[iCam][i]->Exchange(m_File);
  }

  unsigned int nPoints = m_vecLinePoint[iCam].size();
  bRtn &= (BOOL)m_File.Write(&nPoints, sizeof(nPoints));
  for (int iPt = 0; iPt < nPoints; iPt++)
  {
    Point2d& CurPoint = *m_vecLinePoint[iCam][iPt];
    bRtn &= m_File.Write(&CurPoint.dImgX, sizeof(CurPoint.dImgX));
    bRtn &= m_File.Write(&CurPoint.dImgY, sizeof(CurPoint.dImgY));
  }
  m_File.Close();
  return bRtn;
}