Why are quotes being added to my document when using FileSystem.Write(1)?

  • Thread starter Thread starter Christian Blackburn
  • Start date Start date
C

Christian Blackburn

Hi Gang,
I've created a text-based file format. Once I've generated the text to save
the file is as it should be in the debug window. However once I write it to
a file a " is added to the beginning and a ", to the end. Can somebody
explain why? I'm using VB2003.
Thanks in advance for any help,
Christian Blackburn

Here's my code:
Public Sub SaveGame(ByVal strDocument As String, Optional ByVal
bolShow_Dialog As Boolean = False)

'Saves the current game with or without showing a save as dialog

'Stores the Document Text to be saved

Dim strText As String

'Used to cycle through all the value X and Y coordinates of the table's
lights

Dim X As Integer

Dim Y As Integer

'If the user has requested to show a dialog or no file was specified show
the save dialog

If bolShow_Dialog = True Or strDocument = "" Then

objfrmMain.SaveFileDialog.Title = IIf(strDocument = "", "Save Game",
"Save Game As")

objfrmMain.SaveFileDialog.FileName = strDocument

If objfrmMain.SaveFileDialog.ShowDialog() = DialogResult.OK Then

strDocument = objfrmMain.SaveFileDialog.FileName

Else

Exit Sub

End If

End If

strText = "OriginalDocumentName=" & strDocument & ";" & vbNewLine & _

"OriginalDocumentModified=" & DateTime.Now & ";" & vbNewLine & _

"ProgramTitle=" & strAPP_TITLE & ";" & vbNewLine & _

"ProgramPath=" & Application.ExecutablePath & ";" & vbNewLine & _

"ProgramDateTime=" & FileDateTime(Application.ExecutablePath) & ";" &
vbNewLine & _

"DocumentVersion=" & "1.03;" & vbNewLine & _

"PuzzleSize=" & "5,5;"

For X = 0 To 4

For Y = 0 To 4

If bolOn(X, Y) = True Then

strText = strText & vbNewLine & X & "," & Y & "=" & "1;"

Else

strText = strText & vbNewLine & X & "," & Y & "=" & "0;"

End If

Next

Next

Debug.WriteLine(vbNewLine & strDocument & ":")

Debug.Write(strText)

'Opens our document for output, with write only access, and locks the
writability until we're done

FileOpen(1, strDocument, OpenMode.Output, OpenAccess.Write,
OpenShare.LockWrite)

'Writes the strText text to the file

FileSystem.Write(1, strText)

'Closes our handle to the file, allowing all programs to edit the file

FileClose(1)

strFile = strDocument

'Disables the Save Menu Option and Toolbar Button, because we just saved the
file so there couldn't be anything

'worth saving yet

objfrmMain.mnuSave.Enabled = False

objfrmMain.ToolBar.Buttons(2).Enabled = False

objfrmMain.StatusBar.Text = strDocument & " saved."

End Sub
 
[Hi Gang,
I thought I should mention way the file winds up looking:]

"OriginalDocumentName=D:\Current.EverybodyOn;
OriginalDocumentModified=9/10/2003 9:57:24 PM;
ProgramTitle=Everybody On;
ProgramPath=D:\Programming\VB.Net\EveryBody On\Source\Chapter2\bin\Everybody
On.exe;
ProgramDateTime=9/10/2003 9:57:18 PM;
DocumentVersion=1.03;
PuzzleSize=5,5;
0,0=1;
0,1=0;
0,2=0;
0,3=1;
0,4=0;
1,0=0;
1,1=1;
1,2=1;
1,3=1;
1,4=1;
2,0=0;
2,1=1;
2,2=0;
2,3=0;
2,4=1;
3,0=0;
3,1=0;
3,2=1;
3,3=0;
3,4=1;
4,0=1;
4,1=1;
4,2=1;
4,3=1;
4,4=1;",


[Here's how it should look:]

OriginalDocumentName=D:\Current.EverybodyOn;
OriginalDocumentModified=9/10/2003 9:57:24 PM;
ProgramTitle=Everybody On;
ProgramPath=D:\Programming\VB.Net\EveryBody On\Source\Chapter2\bin\Everybody
On.exe;
ProgramDateTime=9/10/2003 9:57:18 PM;
DocumentVersion=1.03;
PuzzleSize=5,5;
0,0=1;
0,1=0;
0,2=0;
0,3=1;
0,4=0;
1,0=0;
1,1=1;
1,2=1;
1,3=1;
1,4=1;
2,0=0;
2,1=1;
2,2=0;
2,3=0;
2,4=1;
3,0=0;
3,1=0;
3,2=1;
3,3=0;
3,4=1;
4,0=1;
4,1=1;
4,2=1;
4,3=1;
4,4=1;
 
"Christian Blackburn"
I did not real search all of your code, but I think the error is in this
part.
For X = 0 To 4
For Y = 0 To 4
If bolOn(X, Y) = True Then
strText = strText & vbNewLine & X & "," & Y & "=" & "1;"
Else
strText = strText & vbNewLine & X & "," & Y & "=" & "0;"
End If
Next
Next
When I see it right, you say everytime
a = a + n
a = a + n + a + n + a + n
etc.
I think you did mean something more like:
a = n + n + n
Dim temp as string
For X = 0 To 4
For Y = 0 To 4
If bolOn(X, Y) = True Then
temp = temp & vbNewLine & X & "," & Y & "=" & "1;"
Else
temp = temp & vbNewLine & X & "," & Y & "=" & "0;"
End If
Next
Next
strText = strText & temp

I hope this helps a little bit.
Cor
 
Christian Blackburn said:
Hi Gang,
I've created a text-based file format. Once I've generated the text
to save the file is as it should be in the debug window. However
once I write it to a file a " is added to the beginning and a ", to
the end. Can somebody explain why? I'm using VB2003.
Thanks in advance for any help,
Christian Blackburn

[...]

FileOpen(1, strDocument, OpenMode.Output, OpenAccess.Write,
OpenShare.LockWrite)

'Writes the strText text to the file

FileSystem.Write(1, strText)

'Closes our handle to the file, allowing all programs to edit the
file

FileClose(1)

Have a look at the docs for FileSystem.Write. Whenever you write a string,
<"> is written before and after. You can write several values in the same
line into the file. They are separated by a ",". If your string also
contains a comma you can distinguish between the comma within a string and
the comma separating the values because the string is put in quotes. Use
FileSystem.Print instead (see it's docs for more information).

You can also create a FileStream (System.IO.FileStream) instead.

See also:

<F1>
Visual Studio.NET
Visual Basic and Visual C#
Reference
Visual Basic language
Visual Basic Language Tour
-> Processing drives, folders and files
.NET Framework
Programming with .NET Framework
-> Working with I/O
 
Yay,
Thanks again Armin. Your FileSystem.Print suggestion worked great.
Cheers,
Christian

Armin Zingler said:
Christian Blackburn said:
Hi Gang,
I've created a text-based file format. Once I've generated the text
to save the file is as it should be in the debug window. However
once I write it to a file a " is added to the beginning and a ", to
the end. Can somebody explain why? I'm using VB2003.
Thanks in advance for any help,
Christian Blackburn

[...]

FileOpen(1, strDocument, OpenMode.Output, OpenAccess.Write,
OpenShare.LockWrite)

'Writes the strText text to the file

FileSystem.Write(1, strText)

'Closes our handle to the file, allowing all programs to edit the
file

FileClose(1)

Have a look at the docs for FileSystem.Write. Whenever you write a string,
<"> is written before and after. You can write several values in the same
line into the file. They are separated by a ",". If your string also
contains a comma you can distinguish between the comma within a string and
the comma separating the values because the string is put in quotes. Use
FileSystem.Print instead (see it's docs for more information).

You can also create a FileStream (System.IO.FileStream) instead.

See also:

<F1>
Visual Studio.NET
Visual Basic and Visual C#
Reference
Visual Basic language
Visual Basic Language Tour
-> Processing drives, folders and files
.NET Framework
Programming with .NET Framework
-> Working with I/O
 
Back
Top