Reading/Editing data in a QTextStream
Hello, so I need to verify data being read from a file to check if specific data is at known location
My TextStream is created as such:
QByteArray ba; QTextStream ts(&ba, QIODevice::ReadWrite); filea.open(QIODevice::ReadOnly | QIODevice::Text); fileb.open(QIODevice::ReadOnly | QIODevice::Text); ts << filea.readAll(); ts << fileb.readAll();
How can i go about reading / editing the information in the TextStream or ByteArray?
Since you call
readAllwhy do you want to use
QTextStreamat all ? You already get a
QByteArrayfrom that method.
On a side note, you don't verify that
filebare successfully opened.
@SGaist Hi, those were just bits of my code, let me explain what exactly i'm building, I need to take 2 hex files, check certain sections of the hex files to see if they contain specific sets of data, if they do I need to rearrange or insert segments of code, after which the two hex files are merged and then run through a TEA encrypt and outputting the encrypted file. I've managed to get everything working except for inspecting/editing the segments.
Ultimately I was given an excel spreadsheet that uses a ton of macros, and they wanted me to build an exe to replace it.
What exactly is failing ?
Did you add the checks for your
@SGaist nothing is failing, I just don't know how to read into the textstream at a specific location, it's not just treated like an array is it?
The QTextSteam::seek method comes to mind.
@SGaist documentation says that returns a bool, and not the value, but I'll give it a shot
seek: Seeks to the position pos in the device.
so, it does that on the device - it just also returns true or false so you can (assumedly) check.
quick google came up with writing to a predefined pos: (where the result is being discarded)
@SGaist documentation says that [
QTextStream::seek] returns a bool, and not the value, but I'll give it a shot
What "value"? The seek just returns a
boolto say whether the seek has been successful, to read what bytes are there you then follow that with some normal "read bytes" operation, it's just that the seek has moved you instantaneously to a particular position in the file.
If you then want to write into the file at that point. Firstly you'd have to have opened the file for read/write, not just read. Secondly, unless you know you will only ever overwrite bytes and never insert or delete bytes, you will probably find you need to rewrite the whole file from start to finish, either by pre-reading its entire content into memory before starting to write or by reading from one file while writing to a brand new one and cleaning up on finish. You cannot insert or delete into/from the middle of a file and have it extend/contract to accommodate your updates.