Forms - Binary File Read Operation - Make Searches Fast Without Freezing The UI
Feb 9, 2011
I have a windows form which to summarize lets the user open a file containing 32 bit hashes, then search for one of them. The hash is then converted to its string representation. The application is giving the results I would expect but I'd like to make it execute faster than it does now; some files can be pretty big > 100 MB.
I'm doing the file read using a BackgroundWorker object to display progress updates and ensure that the UI is available during the process. But for that i need to add a System.Threading.Sleep(1) instruction in the loop; otherwise the application freezes with big files. And System.Threading.Sleep(1) creates a noticeable lag. Any suggestions on how to make searches fast without freezing the UI? Getting speeds comparable to hex editor programs for example.
I am creating a class that searches a binary file for a specific customer number. I am using a binary search that keeps on slicing the file in half until I find the customer number while is sorted. Once it finds it I am positioning it at the first instance of that Customer number as there can be multiple records with the same Cus Number.
Now here is my question. I now need to loop through this Customers records and do some data base searches. Since I want to make my class as generic as possible what should I pass back to the calling class? An Array with all their records. If I do this I have to loop twice, once in the class and once when it passes the array bac to the original calling class?
I have a coma separated text file with loads of records. Usually when we read a text file we start from the first line and go towards the last. I know that there will be x comas per record.But I want to start reading from the last line and then towards the top. This enables me to stop before I reach the top (depending on the data).
What would be the fastest way to read a text file in VB.NET?. I am using VS2008. Basically I want to read from last line and go upwards and stop when I want. I may not need to read the entire file.
[Note: I want to store data in an array and not show it in some textbox]
I need to perform a huge amount of registry read operations, and I'm trying to figure out a way to make each read operation faster than using My.Computer.Registry.
If I used APIs directly to do it, it should be faster, right?
i need to read binary file and in this file found the string and replace it with other one and save the file afterwords. I found many example to read binary, but to find and replace is for me mistery.
I need to write data to a file, preferably in binary format, but I am unaccustomed with the concept. Where's the easiest place to get the basics? I could come here with a specific need, but I'm at the point right now where I am more willing to work within the confines of keeping it simple.
Here's what I know: 1. how to open a new file 2. how to specify the record length 3. how to close the file
Some specific questions:
Does the record length have to be constant throughout the file?
Can I read the nth record without reading the whole file?
I need make an application that gets binary code from a file, such as a .exe, (in 8-bit form) and display the charectors in a RichTextBox .BUT! The catch is I need it to do the process REALLY fast, like in a 5th 0.5 of a second. I have a method but it takes way to like, sometimes 5 seconds for 1 file, which isn't what I want This is the code I have:[CODE]......
I've gone through about 16 hours and two packs of cigarettes trying to figure this out. First a little background. I was using 6.0 up until 2004 when I went to prison. I'm out now, and trying to relearn the trade, using VS 2005. I'm currently porting some 6.0 code from another project, SpyCast Webcam Studio, into VB 8.0. It's disheartening, to say the least. None of the old built-in subs/functions work anymore, so I have to scour the forums to relearn each and every function.The section I'm doing now takes a snapshot from the webcam (Video API --> PictureBox --> Save as Jpeg), then upens the file to upload it to the server via HTTP POST. I've been using this code in SpyCast for years with no trouble, but I spent many hours trying to piece together the right code to open the binary file to read its contents. I pieced together two methods I found around the forums, one using FileStream() though the code I found wasn't for binary files, even though it said it was, so that code doesn't really work. Method two uses Microsoft.VisualBasic.FileOpen() and works better.
Here's the kicker. By the time I run through the rest of the rigamarole of uploading the file, by the time I read it on the webserver, it's *slightly* corrupted. It's a valid Jpeg, no errors, but the picture looks like when I use to watch the Playboy Channel when I was a kid scrambled with weird colors and whatnot. [code] Each "chunk" is basically one "line" of the file. It looks like a single LineInput() return is the text between two carriage returns. Am I correct? I tested this with a flat text file, and it looks true. However, That one input line returns the text or data with the carriage returns *stripped*! ***?!? =( Fine, I have no problem adding my own vbCrLf to each LineInput(), if I were opening text. but this's binary. A character could be Chr(10) or Chr(13), both of which are removed from the original file contents.So I could very well need to use something other than LineInput(), but I haven't found any other examples on the web using this method.
reading a 16bit binary file (tiff image). Since the file is in 16bit, pixels of the file stores values ranging from 1200 to 4500. I want to retrieve those values. I used ReadUInt16 since the file has a 2byte data type but keep getting EnfofStreamException Unhandled error.
Dim f1 As New System.IO.FileInfo(TextBox2.Text) fLen1 = f1.Length Dim snglRead As Single Dim i As Integer
To read a record in a binary file in VB^ I would define a type with all the fields specifying strings as STRING * whatever the length of the field was.
For example: Type Record Field1 as string *15 Field2 to as string * 20 Field3 as String * 10 field4 as byte(10) End Type Dim filerecord as record
I would the open my binary fiel and do a Get#1,, filerecord
The record would be read and all the fielsd would be in place.
Now with the new Structure we cant dimension an array in the Structure And wjhen declaring strings we can't specify the length.
I tried to create structire and use a stream binary reader. and just read afixed number of bytes into the type, The program says it canvert bytes to my fiels.
So how do I do this. Or has Microsoft in their infinite wisdom left no way to do this.
I'm a beginner programmer, but this may not be a beginner program question. I would like to write a program in small basic or visual basic that reads data from a binary file. The data are formatted in hex and look like this:
Im trying to read and write to a file in binary.to give an example of what im trying to do i have posted a picture below.the string is 12 bytes long and each four bytes has a float.the one in red is set at 1 and green and blue are 0 giving the read as the overall color. i have been trying to get this well i tried once and gave up but its been awhile.i have this so far but it doesnt work. this is kinda what i got to read the bytes out but its messed for i have been trying everything i could think of
Code:
Dim s1 As FileStream Dim br As BinaryReader s1 = New FileStream(Application.StartupPath & "/files/test1.bin", FileMode.Open, FileAccess.Read) br = New BinaryReader(s1) Dim bytes(12)
[CODE]...
I have this to write the color back from a color dialog
Code:If dlgColor.ShowDialog() = DialogResult.OK Then
Some binary files have application variables at the end if you open it with a text editor you can see these variables. Now when I read these files into the processor memory the program does not work properly, however if I read a file without this it works fine. So how can I read a byte[] array to EOF so that when I pass that byte array into win32 api create-process it will create the process without corrupting the program?
I am using BinaryReader class to read binary file.But I am facing problem while reading number of bytes from it.I have written code to read only 2 bytes from it,it works well on my machine and read only 2 bytes,but when I deployed that code on server machine it read 4 bytes from file.Whats wrong in the code?Is it due to processor i.e.. 32 bit processor/64 bit processor.
I have an image that has dimension of (100,100). I am using FileStream class. When I run the code I get EndOfStreamException error at line 44. I have pasted the for loop section of the code below.
For x = 0 To 99 For y = 0 To 99 byteRead1(x, y) = br1.ReadByte ' line 44 (exception thrown here)
i'm trying to make a program that searches for a specific file in a specific file, so when the program loads it "writes" in checked list box the names of the drives installed to the computer, but what i want to do is: when the user checks the box, i want it to search for the file in that drive, but i don't know how to do it...
I'm using:
Imports System.IO Imports System.Collections.ObjectModel Public Class Form1
[Code].....
how to make it search in the other drives using the checked listbox?
I'm having problem reading Binary file that has two types of data in it; Strings and numeric data in decimal format.[code]...
1. The loop doesn't stop, and it gives me "Unable to read beyond the end of the stream" Error..
2. The output isn't accurate, apart from a few random correct strings and numbers..
3. After the loop is fixed, how can i save the data to an Array or write it to a text file?. Can the be saved line by line so that the output file has the same number of lines?
4. As you can see in the code, I've tried writing data in a file, but it doesn't work.. Messagebox does show some data (even though it's not accurate), the file however doesn't contain any data..
I ran across my first unicode data, and I am not sure what to do with it. I read the unicode text from a binary file using the ReadBytes method, because ReadChars threw an exception when it tried it. Well, long story short, I have found a way to work with the data, I can convert it using a small Function I wrote, which goes something like this: [Code] And this works wonderfully. It just throws away anything not in the ASCII range, including the BOM at the start of the unicode data.
But I would guess that this method is not very universal and probably not the best way. Are there any VB functions available to do this sort of thing? I was able to find something called Text.Encoding, but there didn't seem to be a reverse of that not that I found anyhow. Any ideas?
I'm trying to read the binary data from a binary file with the code below but the it's return the value in the byte array. How can i read the binary data from the binary file and then convert the data into string?This is how i create the binary file.
Dim fs As New FileStream(Application.StartupPath & "Agency.dat", FileMode.OpenOrCreate) Dim bf As New BinaryFormatter() Call bf.Serialize(fs, GAgency)[code]....
I'm a VB.Net newbie, and would like to write a small app that runs a While loop to check a DNS domain name, and exits once the domain has been registered.
I found code at How to Get Host Name and IP Address in VB.Net - .Net Articles & Samples to resolve the hostname and handle the "No such host is known" error if it still hasn't been registered, but I have a couple of issues:
1. How to make sure the GUI is correctly displayed even though there's an endless While loop? Should I use some kind of asynchronous call so that the window doesn't freeze?
2. I'd like the app to mimize to the icon bar, and have its window title display some status information ("Still waiting/Registered!") so that I can simply move the mouse over it and know whether the domain has finally been registered or not.
I have an application that does not load a main form. My start up object is Sub Main. I am not using the application framework. I have several classes that handle different parts of the program.
objAlerts is the main one being used for this issue I am having.
This is how they are referenced in the main program class.
CODE:
This is the unfinished objAlert
CODE:
My issue is that the windows (alert.Show) open in a frozen state where the mouse pointer displays the hoursglass and the window does not respond. The windows show in the list of objects no problem.
Is there a special way that I should be opening these? I can open windows on the main class no problem.
I read that <form>.invoke(alert) might work, but there is no invoke on the main class according to VB.
I am thinking this might be a threading issue, but I don't know how to fix it because this is the first program that I have made using a Sub Main instead of a form.
Is there a way to stop or minimize forms and dialogue boxes from freezing? they seem to take up a lot of memory when loading to the point that they some times look transparent for a few seconds.
so my program takes what the user enters into a textbox and searches through the data i have stored and if it matchs one of the peices of data it displays the apropriate data to the user. This all worked fine till i changed the textboxes to be added dynamicly to the form when it is load and i put all textboxes in a collection. So now when the text is sent to the search sub it sends the data over but always returns that it didnt find a match. But if i go into the search sub and just tell it what to search for automaticly it finds it no problem.