Unsolved How to make QFile read the whole line
-
@VRonin int cRetVal = 0;
int cRetVal = 0; QByteArray FileHashData, fileData; char checksum[32]; qint64 size_of_file; strUserName = ui->le_Username->text(); m_usrname = ui->le_Username->text(); char carrUsrPwdHash[65] = {"\0"}; QString UsrPwdHash; QFile file("userpass"); if (file.open(QIODevice::ReadOnly)) { file.read(checksum,32); qDebug() << checksum; file.seek(33); size_of_file = file.size() - 33; fileData = file.read(size_of_file); qDebug("FILEDATA %s",fileData.data()); FileHashData= QCryptographicHash::hash(fileData, QCryptographicHash::Md5); qDebug() << FileHashData.toHex(); }
-
@ManiRon
in that image b5afa24a9fa264a178f5ae63c7eff6cf this is my checksum after that a Nul character is there after which my actual data starts -
@ManiRon
OK, in that case it sounds right if it is followed by a "Nul". Personally I would put a comment into your code then to explain that is why you are seeking to byte #33.I don't see anything which would stop at a NUL in your code. What makes you think it is doing so? Are you just relying on the output of
qDebug("FILEDATA %s",fileData.data());
and thinking that shows it has not read past a NUL, that may be an artefact of howqDebug()
displays the data? Try debugging out the length of the data? -
@JonB Actually my requirement is to calculate checksum for the data and store it in the same file where the data i am writing to . So i planned to write the checksum at the begining and followed by the data.
Now when i start the application i will validate the file by reading the checksum stored in file and compare it with the remaining data in file by calculating checksum for them .
Note the stored checksum is calculated using the data and not the whole file
-
could you replace
fileData = file.read(size_of_file);
with :fileData.resize(size_of_file); const auto actualRead = file.read(fileData.data(),size_of_file); Q_ASSERT(actualRead==size_of_file);
-
@VRonin said in How to make QFile read the whole line:
actualRead
I tried sir but i am getting this kind of error
-
@ManiRon It's not hard to fix:
const qint64 actualRead = file.read(fileData.data(),size_of_file);
-
-
@VRonin but thsi doest read the full data
-
No sir i checked the read by removing the NUL from the data in the file and i was able to see that it read the whole data and qDebug() was displaying the full data
This is the whole data when i removed the NUL : " WQA.,?E>t1?dWQA.,DE_??n1?d7be1526df618c0c4d1bab3959adb65ada9f20bd969493e532a7861d29bc6e698{TB.)?V1??n1?dS[H21?z7_??n1?d340819615bcd7cb87459cac37070456eb0af53716c1f0064c4771857728d3777 "
-
But when the data conatins NUL the data will be " WQA.,?E>t1?dWQA.,DE_??n1?d7be1526df618c0c4d1bab3959adb65ada9f20bd969493e532a7861d29bc6e698 "
-
@ManiRon said in How to make QFile read the whole line:
but thsi doest read the full data
What is the output of
qDebug() << actualRead << size_of_file;
?
-
@jsulm said in How to make QFile read the whole line:
size_of_file
Size = 194 .
I thought it was qdebug problem so i wrote the data read from the file to another file then also it remains the same as the data shown in the debug
-
What is the value of
actualRead
? -
Size = 194
-
That means the read doesn't actually stop with the null
-
This post is deleted! -
Yes you are right sir, So what can we do ?
-
@ManiRon
"What can we do" about what? You've spent the whole time claiming the read stops at the NUL, now you confirm it does not, so what's the problem? -
I am storing the data in QBytearray will that be a problem?