파일의 체크섬이 필요하고 완벽하게 정상적으로 작동하는 this을 찾았습니다. 장치로이이 전달열려있는 QIODevice의 체크섬 가져 오기
if (!file.open(QFile::ReadOnly | QFile::Text))
{
...
}
이 (reader.read(&file);
를) 읽을 수 : 이제 다음 줄에 아직 열리지 않은 QIODevice
에 대한 포인터를 가지고이 기능을 변경하려면
bool XmlReader::read(QIODevice* device)
{
QByteArray b = fileChecksum(device);
...
}
이를 내 fileChecksum 구현입니다. 체크섬을 반환하지만 나는 루프에서 영원히 잡히고 xml 구문 분석 오류가 발생합니다. 여기서 내가 뭘 잘못하고 있니? 내가 할
QByteArray XmlReader::fileChecksum(QIODevice* device)
{
if (device->isOpen())
{
QCryptographicHash hash(QCryptographicHash::Sha256);
if (hash.addData(device)) {
return hash.result();
}
}
return QByteArray();
}
편집
바로 QByteArray b = fileChecksum(device);
후 :
구문 분석 오류가
인쇄 및 인쇄 및 인쇄를 유지 할말을 테잎에qDebug() << "Checksum: " << b.toHex();
... : premature end of document
를 쓰레기가되는 .
희망이 도움이됩니다.
정확한 오류 텍스트를 올리실 수 있습니까? 또한 당신이 잡히는 루프가 무엇인지 명확하지 않습니다. 명확히 할 수 있습니까? – demonplus
@tobilocker 오류는이 질문에 포함되지 않은 코드 부분에 있습니다. 'addData' 함수는 전체 파일을 읽고 커서를 "되감"하지 않으므로 자동 pos = device-> pos(); QByteArray b = fileChecksum (device); device-> seek (pos); ' – PeterT
@PeterT 그랬어! 완전한! 당신이 그 라인을 답으로 추가한다면 그것을 받아 들일 수 있습니다. – tobilocker