2012-01-07 17 views
0

私はパラメータとしてUIntを取る必要がある関数を持っています。二For-1としてコンパイルされませんVB.NetのUIntから減算

 Dim x As UInteger 
     For x = 0 To 100 
      Port.SetDutyCycle(x) 
      Thread.Sleep(10) 
     Next 
     For x = 100 To 0 Step -1 
      Port.SetDutyCycle(x) 
      Thread.Sleep(10) 
     Next 

がUINTとして表現することはできません。I'm using the .Net Micro Framework

簡単な例として、私のような何かをしたいと思います。だから、次の私が試した...

 For y As UInteger = 0 To 100 
      Port.SetDutyCycle(100 - y) 
      Thread.Sleep(10) 
     Next 

- yが、その後uintに狭めることができないロングへの変換を強制的に、これはコンパイルされません。次の試み:どのように私は簡単にデクリメントUIntegerを得ることができます

「タイプの値 『整数』 『UInteger』に変換できない」だから...と

  Port.SetDutyCycle(DirectCast(100 - y, UInteger)) 

100 - yはコンパイルされませんループで100〜0?パーハンスアンパッサンの答えとして

、第二のコードブロックが

答えて

1

バニラ.NETで完璧に動作あなたは、単にYを宣言するのを忘れました。修正:あなたは非標準のコンパイルの設定を持っているので、

For y As UInteger = 0 To 100 
     Port.SetDutyCycle(100 - y) 
     Thread.Sleep(10) 
    Next 

警告が生成されます。プロジェクト+プロパティ、コンパイルタブ、警告設定セクション。 「暗黙の変換」オプションの通常の設定は「なし」です。警告に設定したままにしておけば、変換を明示的にするだけです:

 Port.SetDutyCycle(CUInt(100 - y)) 
+0

VSで試してください.2行目の暗黙の変換を「長いからUIntegerに」警告があります。問題を引き起こしている可能性のある.Net Micro Frameworkを使用していますか?私はバニラで試してみます.Net4 – Basic

+0

それはバニラで動作します.Net4 - 謝罪私はそれが重要ではないと思いました。 Q – Basic

+0

ポストを更新し、回避策を適用して更新します。 –