F.P
F.P

Reputation: 17831

What does a hash do to a variable in VB?

I have to refactor a VB6 program to C# and am stuck at understanding the following lines:

Set myFileSystemObject = New FileSystemObject
Set myTextStream = myFileSystemObject.OpenTextFile("myTextFile.txt")
Open sPrinterPort For Output As iFileNumber
Print #iFileNumber, myTextStream.ReadAll
Close #iFileNumber

I do know what's generally happening, but as I'm not used to the VB syntax, I'd like to know exactly what

Print #iFileNumber, myTextStream.ReadAll

does. And more specifically, what the # in front of iFileNumber does. Why is it there? Wouldn't the variable itself suffice to print on the stream?

This is merely for understanding exactly what's happening in the code.

Upvotes: 2

Views: 1954

Answers (2)

Stephen Thompson
Stephen Thompson

Reputation: 33

Print #iFileNumber, myTextStream.ReadAll

While trying to understand this myself, I came across this site that has a section on printing to a printer. They say #some_integer indicates a channel number:

A channel number is any integer value between 0 and 999, preceded by a pound sign (#); it indi- cates a specific channel to a device.

A channel is a connection between your program and an input or output device, such as a printer or a file.

Upvotes: 0

GSerg
GSerg

Reputation: 78175

Print #iFileNumber, myTextStream.ReadAll prints the string returned by ReadAll into the file opened by number iFileNumber (and because there is no semicolon after the statement, it also adds vbNewLine in the end.)

The # (for "number") is there since the old times. VB6 just supports it. It does nothing execution wise. It used to assist readability and make the language more natural-like. Speak out loud:

Open "1.txt" For Input As 1

vs.

Open "1.txt" For Input As #1

Upvotes: 5

Related Questions