2017-05-08 275 views
0

我有2个子例程调用另一个来写入日志文件。数据放在一个名为LogData()的数组中。子例程1包含3个元素,而子例程2包含4.如果我只使用所有LogData()元素编写日志,则在子例程1运行时会出错,因为它不包含LogData(3)中的任何元素。我如何检查LogData元素(3)是否保存一个值,如果是,将它写入日志?我试着用下面的if语句,但这样的错误:VB.net检查数组元素是否存在

If (Not LogData(3) Is Nothing) Then 
w.WriteLine("Address : {0}", LogData(3)) 
End If 

我也试过:

If LogData.Count > 2 Then 
If Not arrayList(yourIndex) Is Nothing Then 

如果我只是写LogData()日志文件,我可以只使用一个循环。不过,因为我在每个元素之间添加文本,所以我无法做到这一点。

子1:

 Dim appData As String = GetFolderPath(SpecialFolder.ApplicationData) 
     Dim LogPath As String = appData & "\myApplication" 
     Dim LogData() As String = {Username, Action, Domain} 
     If (Not System.IO.Directory.Exists(LogPath)) Then 
      System.IO.Directory.CreateDirectory(LogPath) 
     End If 
     Using w As StreamWriter = File.AppendText(LogPath & "\log.txt") 
      Log(LogData, w) 
     End Using 

子2:

 Dim appData As String = GetFolderPath(SpecialFolder.ApplicationData) 
     Dim LogPath As String = appData & "\myApplication" 
     Dim LogData() As String = {Username, Action, Domain, Address} 
     If (Not System.IO.Directory.Exists(LogPath)) Then 
      System.IO.Directory.CreateDirectory(LogPath) 
     End If 
     Using w As StreamWriter = File.AppendText(LogPath & "\log.txt") 
      Log(LogData, w) 
     End Using 

日志子:阵列的

Public Shared Sub Log2(LogData As Array, w As TextWriter) 
    w.Write(vbCrLf) 
    w.WriteLine("Log Entry   : {0} - {1}", DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString()) 
    w.WriteLine("username : {0}", LogData(0)) 
    w.WriteLine("Action : {0}", LogData(1)) 
    w.WriteLine("Domain : {0}", LogData(2)) 
    If (Not LogData(3) Is Nothing) Then 
     w.WriteLine("Address : {0}", LogData(3)) 
    End If 
    w.WriteLine("Application version: " & Application.ProductVersion) 
    w.WriteLine("-------------------------------") 
End Sub 

回答

0

检查长度

Public Shared Sub Log2(LogData() As String, w As IO.TextWriter) 
    w.Write(vbCrLf) 
    w.WriteLine("Log Entry   : {0} - {1}", DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString()) 
    w.WriteLine("username : {0}", LogData(0)) 
    w.WriteLine("Action : {0}", LogData(1)) 
    w.WriteLine("Domain : {0}", LogData(2)) 

    If LogData.Length = 4 Then'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     w.WriteLine("Address : {0}", LogData(3)) 
    End If 

    w.WriteLine("Application version: " & Application.ProductVersion) 
    w.WriteLine("-------------------------------") 
End Sub 
+0

Perfec吨,那工作!谢谢! –