[VB6][Debug]寫Log文字檔

  • 1586
  • 0

.

1. 首先準備好一個文字檔Test.txt,在程式目錄下開一個testlog目錄,將Test.txt放在這目錄下。

例如我的程式在D:\MyFolder\MyProg.vbp(或MyProg.exe),則Log檔的路徑是:D:\MyFolder\testlog\Test.txt

文字檔的內容如下(任意內容都可以,只要有東西):

[Debug Log]

2. 在畫面上放一個TextBox,命名為txtTempForLog,將Visible設定為False

3. Copy Paste下列程式

Private Sub DebugLog(message As String)
  Dim OldContent As String
  Dim filepath As String
  Dim FileNum As Integer
  
  '要先有這個檔案,而且要有內容喔
  filepath = App.Path & "\testlog\Test.txt"
  
  '在畫面上放一個TextBox,命名為txtTempForLog,將Visible設定為False
  '-----↓把Log檔的舊內容讀出來,暫存在畫面上的txtTempForLog裡-----------
  FileNum = FreeFile
  txtTempForLog.Text = ""
  Open filepath For Input As #FileNum ' 開啟文字檔,開始讀出記錄

  ' 若不是空檔案,一行一行把txt讀出來放在txtTempForLog
  If EOF(FileNum) = False Then ' 判斷 Test.txt 是不是空的檔案
    Do ' TextBox容量只有32KB大檔案請用RichTextBox
      Line Input #FileNum, OldContent
      txtTempForLog.SelText = OldContent
    Loop Until EOF(FileNum)
    Close #FileNum
  End If
  '-----↑把Log檔的舊內容讀出來,暫存在畫面上的txtTempForLog裡-----------
  
  
  FileNum = FreeFile ' 先把新now寫進去再把剛讀出來的txt從txtTempForLog寫進去
  'Open filepath For Append As #FileNum  '用Append會把新內容加在後面。我要把新內容加在最前面,所以需要把舊內容暫存在畫面上的txtTempForLog裡再貼進來
  'Print #FileNum, Now & ":" & message
  Open filepath For Output As #FileNum ' 開啟文字檔,準備寫入檔案
  Print #FileNum, Now & ":" & message & vbCrLf & txtTempForLog.Text  '把舊內容貼在新內容後面,寫入檔案
  Close #FileNum
End Sub

4. 在要寫Debug Log的地方,像這樣叫用上述3的程序

Private Sub Command1_Click(Index As Integer)
	'..some code.......
	On Error Goto ErrHandler
	'..some code.......

	Call DebugLog("完成")

ErrHandler:
  If (Err.Number > 0 And Err.Description <> "") Then
	Dim sMsg As String
	sMsg = "Error #" & Err.Number & ": '" & Err.Description & "' from '" & Err.Source & "'"
	Call DebugLog("發生錯誤  " & sMsg)
	'Set MyDBConn = Nothing	'如果有資料庫連線,要記得釋放資源
  End If
End Sub