2017-05-08 53 views
0

ログファイルを書き込むために別のルーチンを呼び出す2つのサブルーチンがあります。データはLogData()という配列に格納されます。サブルーチン1には3つの要素があり、サブルーチン2には4が含まれています。すべてのLogData()要素を使用してログを書き込むと、LogData(3)に要素が含まれていないため、 LogData要素(3)が値を保持しているかどうかを確認する方法はありますか?そうであれば、ログに書き込みますか?私は文の場合は下記を使用してみましたが、このエラー: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それはうまくいった!ありがとうございました! –

関連する問題