.
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