2016-06-21 3 views
-1

私はこのコードに近いですが、家庭ではまだ無料です。 ForループがSingleデータ型のチャンネルに到達すると、 "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

まず、「Single」をコーディングしないのはなぜですか?また、jaggedArray(i)のタイプは何ですか? –

+0

jaggedArray(i)は、Integer型またはSingle型のいずれかです。 JaggedArray()には、4から13までの配列(単精度または整数)があります。 JaggedArrayは配列の配列です。 – busarider29

+0

ああ、私はJagged配列にもブール値の配列が存在する可能性があることを忘れていました。 – busarider29

答えて

0

私はそれを理解しました。実際には、データ型を取得するために使用できるチャネルコレクションのメソッドがありました。私はそのメソッドを使用してデータの追加方法(Integer、Of Single、Of 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 
関連する問題