《VB2008从入门到精通(PDF格式英文版)》第120章


empty lines of text); and remove any duplicates。 The console program will not worry about how
the data is used。 The main focus of TextProcessor is to read data; clean it up; and write out
semantically correct data。 
Reading Data from the Console 
Reading data from the console can happen in two ways: 
o Supply the path of the file to be read to the application as a console argument。
o Pipe the data from another application to the console application。
Our example will be able to accept data streams in both ways。 
…………………………………………………………Page 273……………………………………………………………
CH A PT E R 1 0 ■ L E A R N I N G A B O U T P E R S IS T E N CE 251 
Reading from a File 
Reading from a file is programmatically the simplest way of obtaining the data。 In our case;
we’ll use a mand…line argument to get the file’s name。 For example; to simply load a file
named lotto。txt into the TextProcessor program; the mand line is as follows: 
TextProcessor。exe lotto。txt 
A single mand…line parameter; lotto。txt; is passed as a string to TextProcessor。exe。
mand…line arguments are separated from each other using spaces。 In the context of Windows;
this is a problem; because paths can contain spaces。 For example; the following mand line
would be passed as two mand…line arguments。 
TextProcessor。exe c:My Documentsuserlotto。txt 
The space between My and Documents tells the console that there are two arguments。 To fix
that problem; you need to enclose the path in quotation marks: 
TextProcessor。exe 〃c:My Documentsuserlotto。txt〃 
The mand line may also include additional parameters; as in this example: 
TextProcessor。exe …count 10 lotto。txt 
The parameter …count expects a value; which is 10 in this example。 Traditionally; options
are specified using key/value pairs; because console applications allow the options to be placed
in any order。 The exception is the last argument; which is usually the data on which to operate。 
■Note For more information about the permutations and binations of mand lines; and what a
console can do; see http://en。wikipedia。org/wiki/mand_line_interface。 
Piping Data 
Another solution is to use a mand that reads the file and pipes the contents of the file to
a stream。 The console application reads the stream and processes the data。 The following is
an example of a mand line that pipes data。 The pipe operation is indicated by the pipe
character ( |)。 
type lotto。txt | TextProcessor。exe 
In the example; the mand type; which ordinarily reads a file and displays it on the
console; reads in the lotto。txt file and pipes it to the console。 Then TextProcessor。exe reads
from the console; processes the data; and pipes it back to the console。
…………………………………………………………Page 274……………………………………………………………
252 CH AP T E R 1 0 ■ L E A R N I N G A B OU T P E R S IS TE N CE 
For the scope of the TextProcessor application; the mand lines listed in Table 10…1
are valid。 
Table 10…1。 TextProcessor mand Lines 
mand Description 
TextProcessor。exe Without any arguments; the data will be read from the console
pipe and written back to the console pipe。 
TextProcessor。exe 'filename' Using one argument; the data will be read from the specified
file and written to the console pipe。 
TextProcessor。exe …out Using the …out parameter with two arguments; the first file
'filename' 'filename' specified is where the data will be written; and the last file
specified is the file to read。 
TextProcessor。exe …out Using the …out parameter with one argument; the data is read
'filename' from the console pipe and written to a file。 Notice that the
output file name is explicitly defined; otherwise; if a single
identifier is given; the console application would not know
whether you are reading or writing to a file。 
TextProcessor。exe …help Outputs to the console how to use TextProcessor。 The help is
also generated when the parameters are specified incorrectly。 
Building a Shell 
Implementing TextProcessor from an architectural perspective involves writing two pieces of
code: a module to read/write to a stream and a module to process the stream。 By separating the
two modules; the processor is not dependent on where the data originated。 This also allows the
developer to define an interface that is implemented to process the data。
Assembling the Pieces Using an Echo Program 
The lottery…prediction program is a case where I know something about the topic; but not all
the details。 Developing code is a constant challenge of figuring out which APIs to use。 In this
type of situation; so that I don’t get bogged down in API hunting; I first assemble all of the pieces
I need for the application。 I develop what I call an echo program。 An echo program has all of its
pieces in place; and when called will seem like it functions。 The echo part es in when the
end piece
小说推荐
返回首页返回目录