Divyam Hacker
Divyam Hacker

Reputation: 3

Editing Text File In vb6

I Have Displayed text file in richtextbox. and onclick on command button value of textbox1 is being replaced in text file.

but How to keep both data . previous one and another which is entered new in textbox

I HAVE USE THIS CODE BUT IT REPLACES ALL THE TEXT :

Open "D:\chat.txt" For Output As #1
a = Text1.Text
Print #1,  a
Close #1

Upvotes: 0

Views: 3549

Answers (2)

Daniel Elkins
Daniel Elkins

Reputation: 87

Additional note

Since I'm not able to add a comment to Boann's answer (the one marked as accepted).

The Append access mode used with the Print statement automatically appends a new line at the end of the file. This is fine in almost all cases, but for anyone reading this that wants to avoid this behavior, just add a semicolon at the end of the Print statement (this is the only instance I've seen the semicolon used in VB6).

a = Text1.Text
intHandle = FreeFile
Open "D:\chat.txt" For Append As intHandle
  Print #intHandle, a; ' Notice the semicolon; prevents a new line after this output.
Close #intHandle

I'm sure the code you posted originally was just for the sake of getting an answer and is not what your code actually looks like. Otherwise:

To you or any future readers, here's a simple AppendToFile() function which will make repeated calls easier, ensures the file gets closed even if a run-time error is encountered, and shows useful debug information upon failure (i.e. with an invalid filename):

How your original code would be written when putting my below function in your code:

AppendToFile "D:\chat.txt", Text1.Text

And here's the function:

Private Function AppendToFile( _
  ByRef FilePath As String, _
  ByRef Text As String, _
  Optional ByVal AppendNewLine As Boolean = True _
) As Boolean

  On Error GoTo ErrorHandler

  Dim intHandle As Integer

  ' Get an available file handle to use.
  intHandle = FreeFile

  Open FilePath For Append As intHandle

    ' Only use semicolon at end if we do NOT want to append a new line.
    If AppendNewLine Then
      Print intHandle, Text
    Else
      Print intHandle, Text;
    End If

  Close intHandle

  intHandle = 0
  AppendToFile = True

  Exit Function
ErrorHandler:

  ' Ensure that file is indeed closed.
  If intHandle <> 0 Then
    Close intHandle
  End If

  ' Show error in debug window (CTRL+G)
  Debug.Print _
    "Error (#" & CStr(Err.Number) & ") in " & _
    "TextToFile( _" & vbCrLf & _
      "`" & FilePath & "`, _" & vbCrLf & _
      "`" & Text & "`, _" & vbCrLf & _
      IIf(AppendNewLine, "`True`", "`False`") & vbCrLf & _
      "): " & Err.Description & IIf("." = Right$(Err.Description, 1), "", ".") & vbCrLf

    Exit Function

End Function

Upvotes: 0

Boann
Boann

Reputation: 50061

Change For Output to For Append, and it will add the new text to the end of the file instead of overwriting it.

Upvotes: 4

Related Questions