Hi all, How do I change bytes [text stored in those bytes] in a binary file?
I have a little function that read bytes 335-343 [For Keyer] and bytes 344-352 [for verifier] and displays it. These bytes store who the keyerID and VerifierID of a data entry file are. From time to time the Verifier Resumes the file [to insert new records], and his/her name gets stored in the KeyerID bytes. So if the original keyer had lots of errors, the new verifier now becomes the owner of this file and the errors are attributed to him/her [not fair]. He/She gets penalized when there are lots of errors.
My question to you is, how do I change the content of those bytes and save it to the file, without damaging any part of the file? I want to save 'H345' in those bytes, [H345 is an example of a Keyer/Verifier ID]
note - as of now I am using 010 Editor [binary editor]to manually change those bytes. When I use this editor, I can see the text portions for those bytes.
I am using vb.net 2008Here is the function I use to find out who the keyer and Verifier of the date entry file are.
Sub FindInfoFromFile(ByRef strFileToCheck As String) Dim bYes As Boolean Dim strOpName As String = "" Dim strVerName As String = "" Dim strKeyer As String = "" Dim strVerifier As String = "" Dim strFileFlag As String = "" Dim intMyPos As Short Dim intMyPos2 As Short On Error GoTo ErrorHandler If strFileToCheck <> "" Then Fname = Fname & strFileToCheck strOpName = "" strVerName = "" strFileFlag = "" sNewFile = Fname Using fs As New FileStream(sNewFile, FileMode.Open) Dim strOutofBFlag As String = "" Using br As New BinaryReader(fs) 'Check The file type to see it it is an ezc file fs.Position = 0 'For x As Integer = 1 To 2 strFileFlag &= br.ReadChar 'Next If strFileFlag <> "d" Then 'Exit the loop because this is not an ezc file MsgBox("Invalid File Type Being Checked: " & sNewFile) GoTo ExitFileCheck End If fs.Position = 335 'Get Keyers Name - this info is stored in bytes 335 to 344 For x As Integer = 335 To 343 strOpName &= br.ReadChar Next x 'Verifier are bytes 344-352 fs.Position = 344 For x As Integer = 344 To 352 strVerName &= br.ReadChar Next x End Using End Using 'Parse the Keyers name by removing unwanted characters intMyPos2 = 0 intMyPos2 = FindNonBlankPos(strOpName, Chr(0)) strKeyer = Mid(strOpName, 1, intMyPos2 - 1) Text5.Text = strKeyer 'Parse the Verifyer name by removing unwanted characters intMyPos2 = 0 intMyPos2 = FindNonBlankPos(strVerName, Chr(0)) strVerifier = Mid(strVerName, 1, intMyPos2 - 1) 'Text8.Text = StatusDB.GetNameByEmpID(strVerifier) Text8.Text = strVerifier End If ExitFileCheck: ExitHere: Exit Sub ErrorHandler: Select Case Err.Number Case 5 MsgBox("Invalid File Type " & Err.Number & " :-: " & Err.Description) 'Resume Next Case Else 'cout Err.Number & Err.Description, endl Call HandleUnexpectedError(Err.Number, Err.Description) End Select Resume ExitHere 'GoTo ExitHere Resume Next End Sub
Thanks in advance