2016-06-21 2 views
-1

나는이 코드와 가깝지만 아직 집이 없다. For 루프가 단일 데이터 형식의 채널에 도달하면 "Of Integer"부분을 "Of Single"로 변경해야합니다. 명시 적으로 "Single"을 코딩하지 않고도이를 수행 할 수있는 쉬운 방법이 있습니까? 그렇지 않다면, 나는 내가하려고하는 것처럼 이것을 통해 루프를 할 수있을 것이라고 생각하지 않습니다. AppendData I.E. 뒤에 첫 번째 매개 변수를 생략하려고했습니다. "Channels (i). AppendData (jaggedArray (i))"컴파일 할 때 오류가 발생하지는 않지만 코드를 실행할 때 예외가 발생합니다. 그래서 그것은 작동하지 않습니다. 데이터 유형 매개 변수와 물론 추가 할 데이터 배열이 필요합니다.For 루프에서 유형 매개 변수를 변경 하시겠습니까?

For Each c As TdmsChannel In Channels 
     Channels(i).AppendData(Of Integer)(jaggedArray(i)) 
     i += 1 
    Next 
+1

먼저 'Of Single'을 코딩하지 않는 이유는 무엇입니까? 또한 jaggedArray (i)의 유형은 무엇입니까? –

+0

jaggedArray (i)는 정수 또는 단일 유형일 수 있습니다. JaggedArray()에는 4 ~ 13 개의 단일 배열 또는 정수 배열이있을 수 있습니다. JaggedArray는 배열의 배열입니다. – busarider29

+0

오오 그렇습니다. 지그재그 배열에도 부울 값 배열이있을 수 있다는 사실을 잊어 버렸습니다. – busarider29

답변

0

알아 냈습니다. 실제로 데이터 형식을 가져 오는 데 사용할 수있는 채널 컬렉션을위한 메서드가있었습니다. 이 메서드를 사용하여 데이터 (Of Integer, Of ​​Single 또는 Boolean 유형)를 추가하는 방법을 결정했습니다.

Dim dtype As System.Type 
    For Each c As TdmsChannel In Channels 
     dtype = Channels(i).GetDataType 
     If dtype.Name = "Int32" Then 
      Channels(i).AppendData(Of Integer)(jaggedarray(i)) 
     ElseIf dtype.Name = "Single" Then 
      Channels(i).AppendData(Of Single)(jaggedarray(i)) 
     ElseIf dtype.Name = "Boolean" Then 
      Channels(i).AppendData(Of Boolean)(jaggedarray(i)) 
     End If 
     i += 1 
    Next 
관련 문제