Random Access File Programing?
Jun 23, 2011Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
FileNum = FreeFile()
[Code].....
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
FileNum = FreeFile()
[Code].....
I am writing a program to calculate Pi to several hundred billion decimal places and this will require lots of GB of memory. I wrote a test program in VB2008 that saved the first 16 digits of Pi (without the decimal point) to both a text file and a random access file, just to be sure it was outputting the numbers properly. For reference the first 16 digits of Pi are:
View 8 RepliesYears ago when coding with VB6 and earlier, I used a file open command to create, read, and write a file that made it easy to store useful information.I believe it was binary and you wrote/read the data to a specific line in the file. When you opened the file with something like notepad, it just showed random ascii chars. When I needed a line of data, I could specify what line to load it from.
View 2 RepliesI need an example of how to create and use a random access file
View 3 RepliesCreated Structure
opened file using FileOpen(1, "filename.dat", OpenMode.Random, , , bytes in structure)
used structure .ID = record number
FilePut(1, structure)
FileClose(1)
The program enters the first record but although when I enter more records it still shows only one record in the file.
I am moving all of the prgrams that I have written, to VS2008. However, I use Random Access File Foemat for the databases that have been used for over a decade. I need to be able to read and write to a Random access file.I have multiple fields in the database and cannot lose access to this information.VS2008 doesn't use the following type of code to define the Fields that will be used in the Database. I did what it suggested, using the Structure / End Structure, but that was as close to a solution that I could find in the Help Files.
Type EquipType
EquipName As String * 32
Location As String * 28[code].......
I'm doing a Program for a Friend of mine, He Want to have a Console Program Running on his Computer.OK the problem i am having is With Stream Read, I have 3 test users inside Test File, if User 1 logs in his information is store in logged file with time and data.but if User 3 logs on user 1 2 and 3 are all saved on the logged file
i dont have read to end of file in my Code.i dont have my Program with me, so i going off the top of my head i have something like this what i want to be able to find out how to do is Right from any part of the file and out put it, I take it i need to use Random Access but how to i code Random Access for this type of file. All i can find is how to Randomly place Words in a text file with Length and size.
[Code]...
I achieved reading and writing data to a random access file, buthow do I write and read data from a certain position in the *.txtfile? Would it be better if I created multiple file modes to
View 2 RepliesI am using Visual Basic 2009 to create a file of records to store students tests scores.Currently i can write to the file, create new records etc. However i cannot edit a particular record, im sure i have to use file seek function but i have no idea where to start.here is some of my source code to give you an idea of where im at
Do While (Not EOF(1)) And found = False 'loop until no more records or the record is found
nosrecords = nosrecords + 1
FileGet(1, onestudent, nosrecords)[code].....
how to read and write random access records in .NET. Now I know random access files are dead and the response on every query I found with google/bing/yahoo searches was don't use random access use Binary serialization but I can not. I have a situation where I need to read and modify 256 byte records in a file that is used by another application.
Now for a bit of background the file is made up of 27 fixed length records of 256 bytes. Each of the records has a separate structure consisting of 30-120 fields. The proplem I am having is I can create the record structures but when using the FileGet method I am receiving an error. Now I have found samples that showed the same format I am using that claim to work.
The error I am getting is Option Strict On disallows narrowing from type 'System.ValueType' to type 'ProgramName.ModuleName.Record' in copying the value of 'ByRef' paramater 'Value' back to the matching argument.
The basic layout (simplified) is as follows:
Code:
Structure Record
<VBFixedString(6)> Public SomeParam as String
Public SomeNumber as Short
[Code]....
Now the overloads for FileGet show all of the data types including Object. But I have tried various methods to retreive the 256 byte record but without success. Do I have to actually read each of the several hundred fields of the structure one by one? Or am i overlooking something (I have been known for this in the past)
Or (and I'll kick myself if this is the only way) do I just have to set option strict Off in the module and the code as above will actually work.
I would love to be able to just ditch the random access file but I have to keep it for compatibility with several other applications at this time.
The application reads information similar to a DXF file. For purposes of discussion, the data consists of lines, those lines have endpoints, x1,y1,x2,y2. Within the file those lines create "paths", in other words, they are connected. There can be many separate paths within a single file. However in the original file, the geometry is not in any particular order, the paths are not indicated.
View 3 RepliesI'm tasked with the job of creating a javascript version of a units conversion application written in vb6. I have the source code but I don't have vb 6. The source code uses a dat file to hold a conversion array (unit type, unit, xfactor, plusfactor). Getting the data out of this file would be good to me. I tried creating a little app in vb 2010 to write the data from that dat file to a txt file using essentially the same code as the source code. And that has been somewhat successful (took a while to figure out the fixed string business). Now I can pull the data out as an array. The math elements of this array look fine but the strings are somewhat read-able but too garbled to use. I can't seem to fix that by changing the character set/encoding.
View 3 RepliesThis time, basically, i'm working with Random Access Files.I have this et of code to read data from a form a save it into a .dat file. This works fine.
Public Class frmDramaClub
Structure MemberRecord
Dim ID As Integer[code].....
how to proceed. One of our customers is going to be sending me a flat file (ASCII-Text) that I have to break down and scan. Every line ends in a CrLf - So I know I can use StreamReader and ReadLine(). I did get it to work on one of the test files they sent.(A very Short file) However, the file is not delimited at all and every field is padded to the full length they specified. Here's the format of the file:
[Code]....
I have a flat file that is sorted by account number. I am migrating an application that was in vb6 to .Net. The application uses Random file access and uses a binary sort method to find a record.
Here is the code
Do While (low < high Or low = high) And (f = 0) 'Checking for an account match
middle = (low + high) / 2
FileGet(FileNum, Record, middle)
If Account < Trim(Mid(Record.Data, Byte1Start, Byte1Len)) Then
[Code] .....
From reading up on this in .Net it seems that using the Binary Reader seek method would be the alternative to using old vb6 random access code. The problem is the Binary Reader Seek method goes by Byte position instead of record number. How to convert my code to use a binary reader.
When you need to do random access to the lines of a text file, the regular solution is to put those lines in a list and access them in that list.But doing this if the text file is large creates a large memory overhead and may cause some memory stress on the application.This class maps the file and provide the ability to read any particular line in the file at a random position, without the need to read or put in memory any other line but the desired line. The only memory overhead involve is the 1024 bytes buffer of the base stream.Even if the file mapping can be a process that consume a noticable amount of time if the file is very large ( ~ 5 seconds for each 100,000,000 caracteres) , once the mapping is done the access to a particular line becomes instantaneous regardless of the size of the file. (The file mapping can always be done at a convenient time (ex when the process load) and can be done on a worker thread The class is base on a StreamReader to support the differents Text Encodings Example uf usage ( As I say, if the file is very large, dont do it like that, but declare the class at a convenient time)
Imports Reader = System.IO.MyStreams
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
[code]....
[code]...
View 11 Repliesbefore you say something like "just search the forum for socket programing examples" I did and came up with things that were to complicated for me e.g multi threaded etc even a chat server that holds users names in a hash table i couldnt quite grasp so im asking if anyone can give me a few pointers maybe link me to a website that i havnt stumbled apon in my google seaches that contain infomation just about basic tcp server that recieves text strings no fancy users or anything like that.
View 2 RepliesI am trying to make a program that converts the weight of objects on earth into other planets. i have trouble with naming things like weight ratio and planet because VB program doesn't accept the coding. i don't know where to put theh data in the disk so that the program can access it when it runs.
Imports System.IO
Public Class weightcalc
Private planet structure
[code]....
Im an electrical engineering student, and I am trying to utilize the serial port to give me high and low digital states. What i want to do is simply turn on an LED or turn it off. the basic gist of what I have been trying currently is that on a button click, serialPort1.DTREnable = enabled or disabled, indefinitely until the next button click.
So far, I have only been able to get the LED to momentarily flash... It seems to begin in an active state flash off, then immediately, return to its active state. I am using Visual Studio 2008. Can I use DTREnable to generate on/off states by enabling or disabling the pin? Is there a tutorial somewhere for electrical engineering applications using visual studio 2008?
I created a project in Excel-VBA (wich I'm also new at) that connect to a SQL. It retrieves data, puts it in arrays, calculates, writes it up nicely and mails it to a mailing list before it closes itself down. This works when Excel is stable on the server, which it is not. Therefore I'm set on rewriting it to VB.NET (just have to learn it first).Project:To build this project in VB.NET I wanted to try and make it Object Oriented (OO). I have read that OO is when I create a Sub or Module for different tasks. Are there any advantages in learning/doing this from the start? I plan on creating Subs for almost everything, and then call it from a Main sub.
Too much OO?:
These are the modules I plan to create (and call)
Connect to SQL moduleSet up a query and put data in arrays moduleCalculation moduleOutput
[code]....
I am trying to get a better understanding of the uses of arrays in programing, and have been wondering why do programmers use an array when working with mathematical concept such as Fibonacci sequences? why are arrays so prevalent in coding now a days.
View 3 Repliesmy form is connection to an access db ....called Quiz.db , it has 10,000 questions and answers , i want to click button and generate random question with correct answer , so ID# of record must be random on load and click next?
View 3 RepliesI am trying to convert a VB5 program to VB2010 so that I can continue to support it on my new PC. My copy of VB5 was an upgrade from VB3 which was an upgrade from VB2 which came on floppies, so I can't just install every preceding version as my new PC doesn't have a floppy drive.I have accepted that I will have to design all the forms from scratch (whatever happened to twips?) and will have to go through the thousands of lines of code line-by-line, but I have hit a brick wall when it comes to random access files. One such file is defined in the Declarations section of Module1 thus:[code]....
I soon found I had to change Type to Structure, but then in the declaration of transrec, transtype acquired a wavy blue underline with the error message: "'transrec' cannot expose type 'transtype' in namespace 'Treasurer_2010' through module 'Module1'.So if I can't use the structure in the module in which it is declared, where can I use it?
I have 15 years' worth of files (approx. 10,000) that were created using VB6 structures and stored using the random access method. I am trying to write a conversion routine that will read the old structures and put them into a new format that is more compatible with the .net environment. I have not been able to successfully read any of the old files using the tools available in .net. Each file starts with a header record structure. The header record tells me how many tags are in the file. The next record (ie record number 2) is the first tag pointer record in the file.
There are num_of_tags of the pointer records. Each pointer record has the string that holds the tag's 'literal name and two long integers that tell where in the file this tags records are. Those actual records are stored as History data structures, [Code]
how do you save data stored in an array of records (structure) to a text file using StreamWriter? I currently have
Private Sub btnSaveToFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveToFile.Click
Dim sw As New StreamWriter(New FileStream("EmployeeDetails.txt", FileMode.Create, FileAccess.Write))
For Each record As EmployeeType In employees
[code]....
but it doesn't work. My array is fixed and currently has 3 elements (for testing purposes). If I enter two records and add these to the structure I get the following data saved to the text file:
123,helen,66000
879,john,89975
0,,0
How do I stop unused elements of the array being included when writing to file? Should I use a dynamic array instead and if yes, how do you use dynamic arrays with structures?
I'm trying to convert an old Quick BASIC program to VB.Net. There doesn't appear to be any direct replacement for the old file statements. Building a database seems like overkill for my simple needs.
How can I do the following in VB.Net?
OPEN "test.dat" FOR RANDOM AS #1 LEN = 20
FIELD #1, 10 AS a$, 10 AS b$
LSET a$ = "One"
LSET b$ = "Two"
PUT #1, 1
GET #1, 1
PRINT a$, b$
CLOSE #1
I am trying to generate random images from access database using hashset as it is said to be unique and there won't be any repeated images appearing. But, it doesn't seem to work.
How can i get it to work? By the way, i am very new to the concept of hashset.
Private Function GetImageFromByteArray(ByVal picData As Byte()) As Image
If picData Is Nothing Then
Return Nothing
End If
' is this is an embedded object?
Dim bmData As Integer = If((picData(0) = 21 AndAlso picData(1) = 28), 78, 0)
' load the picture
Dim img As Image = Nothing
Try
Dim ms As New MemoryStream(picData, bmData, picData.Length - bmData)
img = Image.FromStream(ms)
Catch
End Try
' return what we got
Return img
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Panel1.Visible = False
Panel2.Hide()
Dim conn As New OleDbConnection
Dim DA As OleDbDataAdapter
Dim DS As New DataSet
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;User Id=admin;Password=;"
DA = New OleDbDataAdapter("Select Empty, EmptyName, Target, TargetName from PicturesDisplayed", conn)
DA.Fill(DS)
Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Dim oledbconnection As OleDbConnection
oledbconnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Documents and SettingsAdministratorDesktopdb1.mdb;Jet OLEDB:System Database=system.mdw;")
oledbconnection.Open()
Dim command As OleDbCommand
command = New OleDbCommand("select count (*) from PicturesDisplayed", oledbconnection)
Dim count As Integer
count = command.ExecuteScalar()
oledbconnection.Close()
Dim randomImage As New HashSet(Of Integer)
' Create a integer and new Random object
Dim intPic As Integer
Dim rand As New Random
'Pick a random number between 0 and the number of images in database
intPic = rand.Next(0, count)
randomImage.Add(intPic)
PictureBox1.Height = 256
PictureBox1.Width = 256
PictureBox2.Height = 256
PictureBox2.Width = 256
Dim pic1x As Integer = _
(Me.ClientSize.Width - PictureBox1.Width) 2
Dim pic1y As Integer = _
(Me.ClientSize.Height - PictureBox1.Height) 2
PictureBox1.Location = New Point(pic1x, pic1y)
Dim pic2x As Integer = _
(Me.ClientSize.Width - PictureBox2.Width) 2
Dim pic2y As Integer = _
(Me.ClientSize.Height - PictureBox2.Height) 2
PictureBox2.Location = New Point(pic2x, pic2y)
' Now set the picturebox image equal to the image chosen from the array randomly using the random
PictureBox1.Image = GetImageFromByteArray(DS.Tables(0).Rows.Item(intPic).Item(0))
PictureBox1.Visible = True
PictureBox2.Image = GetImageFromByteArray(DS.Tables(0).Rows.Item(intPic).Item(2))
PictureBox2.Visible = False
If (randomImage.Count = count) Then
Me.Close()
End If
End Sub
how can we or can we import data from PC RAM, and stored it to data like text or grafik...
View 6 RepliesI'm am trying to determine the total number of fields under a particular heading given that the other Heading's total number of fields are > or < than the heading in question. The query, shown first in the attached code, works well if there is one column in one database table, however it does not work well when there are a number of columns with a different number of fields respectively. The CategoriesID encompasses the entire tables contents.I devised a function to determine the total number of fields within a particular column and then attempted to incorporate this, without success, into the second query, shown in the code.
Private Sub GetRandomHeadingFields()
Dim varNumberHigh As Integer
varNumberHigh = TotalNumberofHeadingFields()
[code]....