Transcript Document
Visual Basic 6
Programming.
Lecture 6 : February 2005
Dr. Andrew Paul Myers
18/07/2015
1
Week 6 – Data Files
(A short addendum on arrays).
Why use data files?
File types.
Dealing with the filing system.
Opening and closing files.
Reading from and writing to files.
Error trapping.
18/07/2015
2
More on Arrays.
Arrays in VB can be multidimensional.
Dim sngData1(50,50) As Integer
Dim strWords (10, 10, 1 To 20) As String
How many elements are there in each of these
arrays?
18/07/2015
3
More on Arrays.
You can find the bounds of these arrays as for a
one-dimensional array.
UBound(strWords, 1)
LBound(strWords, 2)
UBound(strWords, 3)
18/07/2015
gives 10
gives 0
gives 20
4
More on Arrays.
Dim sngValues(5,5) As Single
Dim intInner As Integer
Dim intOuter As Integer
For intOuter = 0 To 5
For intInner = 0 To 5
sngValues(intInner,intOuter) = 0
Next intInner
Next intOuter
18/07/2015
5
Why use data files?
Programming can be slow and painful.
Programs are useful if they can be used repetitively
for different data.
Putting data in the code is very restrictive.
Typing in numbers to a textbox is little better.
Data is often available in digital form from a source.
18/07/2015
6
Data File Types.
File Contents:
Text files (ASCII codes).
Comma Separated Variable (CSV) files, a type of
text file.
Binary files. Written for compactness of data and
speed.
File Access:
Sequential.
Random Access (only applies to binary files).
18/07/2015
7
Sequential Files.
Analogous to reading a book, using your finger
(or file pointer) to point to the letters as you read them:
18/07/2015
Start at the beginning.
Read data sequentially.
Advance the file pointer.
Data finishes at end of file ( EOF ) marker.
Can only safely add new information at the end of
the data file.
8
File Handling.
VB has 6 file commands which interface directly to the
Windows OS, to affect files and folders
Change drive, or change Directory:
ChDrive <drive letter>
ChDir <path>
Make or Remove a directory:
MkDir <dir name>
RmDir <file name>
Rename or delete a file:
Name <file name> <new filename>
Kill <file name>
18/07/2015
9
Examples.
ChDrive “D:”
ChDir “Data”
MkDir “C:\Test”
Name strFile1 strFile2
Kill “*.tmp”
Warning:
Don’t use these unless you really need to. Better to
prepare files before you run your VB program!
18/07/2015
10
Opening a Data File.
General form:
Open <file_name> For <mode> As #<channel>
Where:
<file_name> is any valid file path as a text string.
<mode> can be either Input, Output or Append.
<channel> is an integer number (or variable).
18/07/2015
11
Opening a Data File.
Examples:
Open “Data.txt” For Input As #1
Open “Z:\my Documents\Data.txt” For Output As #2
Open strFile_Name For Output As #intChannelNumber
18/07/2015
12
Finished with a Data File?
Data files must be closed when finished with!
Close #<channel>
Example:
Close #1
“Close” on its own closes any and all open files. It is
a good idea to include this in your “Exit” subprogram to tidy up any forgotten files. If there are
no open files, “Close” does not create an error.
18/07/2015
13
Writing to a File.
General Form:
Print #<channel> , <data>
Examples:
Print #1 , “Hello”
Print #intFNum , strName, sngValue, dblData
18/07/2015
14
Reading from a File.
General Form:
<mode> Input #<channel> , <data>
e.g.
Input #1 , strData
Line Input #1 , strData
Input #intFNum , strName, sngValue, dblData
18/07/2015
15
Choosing a Channel.
If you are using multiple files, VB has a command to
make choosing a free file channel easier! The “free
file” command. Example:
Dim intFree As Integer
intFree = FreeFile
Open strFile_Name For Output As #intFree
Close #intFree
18/07/2015
16
End of File Marker.
The end of a data file is indicated by a EOF marker.
intDataNum = 0
Do While Not EOF(intFree)
Input #intFree, dblData
intDataNum = intDataNum + 1
Loop
This is really useful (HINT) when reading any files. You do
not need to know how much data is in the file in advance.
18/07/2015
17
Reading Characters.
VB allows you to read any number of characters from a file.
<variable> = Input ( <no. of chars> , <channel> )
e.g. Read 6 characters from a file.
Dim strData As String
strData = Input(6, #intFree)
18/07/2015
18
Length of a Data File.
VB allows you to determine the length of a file in
characters. i.e.
<variable> = LOF(<channel>)
Dim intData As Integer
intData = LOF(1)
18/07/2015
19
Length of a Data File.
Dim strContents As String
strContents = Input(LOF(1),#1)
This would read the whole data file and
store it as one LARGE string.
I wouldn’t do this if I were you! Inherently
very dangerous.
18/07/2015
20
File Error Trapping.
The only time we will ask you to use the dreaded “GoTo”
statement!
NEVER USE “GoTo” ANYWHERE ELSE!
General form:
On Error GoTo <label>
A label has the form of a character string (no spaces) ending
with a colon.
Example:
This_Is_A_Label:
18/07/2015
21
The Code.
On Error GoTo FileError
Rest of code etc...
FileError:
Select Case Err.Number
Case 53
Print “File not found!”
Case 55
Print “File already open!”
etc...
Note the colon is only used where the label is defined.
18/07/2015
22