2017-11-23 7 views
0

일부 데이터를 QDataStream에 저장하고 즉시 데이터를 가져 오지만, 수확 중에는 카운트가 0으로 표시됩니다. 코드는 잘하지만 예기치 않은 동작이QDataStream이 예상대로 작동하지 않습니다.

//Overloading 
QDataStream& operator<< (QDataStream& writeTO, const CascadeJobInfo& data) 
{ 
    writeTO << data.m_infoJobType << data.m_connectionName << data.m_submitJobId << data.m_submitJobStat; 
    return writeTO; 
} 

QDataStream& operator>> (QDataStream& readIn, CascadeJobInfo& data) 
{ 
    readIn >> data.m_infoJobType >> data.m_connectionName >> data.m_submitJobId >> data.m_submitJobStat; 
    return readIn; 
} 

void Fun() 
{ 
     // Code Starts here 
    projectFileName = /*Path to folder*/ 
    QFile file(projectFileName); 
    file.open(QFile::ReadWrite); 
    file.close(); 

    QDataStream dStream(&file); 
    int jobLstCount = /*Get the Count, assume 4*/ 
    dStream << jobLstCount; 

    for(int i = 0; i < jobLstCount; i++) 
    { 
    JobInfo.m_infoJobType = jobFlowItem->getJobType(); 
    JobInfo.m_connectionName = submitItem->connectionName(); 
    JobInfo.m_submitJobId = submitItem->jobID(); 
    JobInfo.m_submitJobStat = submitItem->jobState(); 
     // All valid data stored here 
    } 

    file.close(); 

    QDataStream dStreamOut(&file); 
    dStreamOut >> jobLstCount; /*Count returns zero here insted of 4*/ 
    CascadeJobInfo jobInfo; 
    // Why jobLstCount is getting zero here 
    for(int i = 0 ; i < jobLstCount ; i++) 
    { 
    dStreamOut >> jobInfo; 
    } 
} 

답변

0
file.open(QFile::ReadWrite); 
    file.close(); <--- HERE 

    QDataStream dStream(&file); 

당신은 너무 기본적으로 작동하지 않습니다 잘못된 파일 기술자로 작업, 바로 당신이 그것을 열 수의 파일을 닫는에게 보인다. 완료되면 코드 끝 부분에 file.close()를 추가하십시오.

+0

감사합니다. – Sijith

관련 문제