datavalue = temp
  Loop Until k = 3 Or UBound(datavalue) > 27
  
If UBound(datavalue) > 27 And datavalue(0) = Addr Then
 BitN1 = GetBit(datavalue(26), 3)
   BitN2 = GetBit(datavalue(26), 7)
   BitN3 = datavalue(25)
     BitN4 = datavalue(24)
      BitN5 = datavalue(23) For j = 1 To 3
 tempr = (datavalue(2 * j + 1) * 256 + datavalue(2 * j + 2)) / 10000 * 10 ^ datavalue(23)
 If tempr <> oitem(j + (Addr - 26) * 10).Value Then oitem(j + (Addr - 26) * 10).Write tempr
 Next j
 
 
 For m = 4 To 6
 tempr = (datavalue(2 * m + 1) * 256 + datavalue(2 * m + 2)) / 10000 * 10 ^ datavalue(24)
 If tempr <> oitem(m + (Addr - 26) * 10).Value Then oitem(m + (Addr - 26) * 10).Write tempr
 Next m
 
 
  tempr = (datavalue(2 * 7 + 1) * 256 + datavalue(2 * 7 + 2)) / 10000 * 10 ^ datavalue(25) * BitN1
  If tempr <> oitem(7 + (Addr - 26) * 10).Value Then oitem(7 + (Addr - 26) * 10).Write tempr
  
  tempr = (datavalue(2 * 8 + 1) * 256 + datavalue(2 * 8 + 2)) / 10000 * 10 ^ datavalue(25) * BitN2
  If tempr <> oitem(8 + (Addr - 26) * 10).Value Then oitem(8 + (Addr - 26) * 10).Write tempr
 
 tempr = (datavalue(2 * 9 + 1) * 256 + datavalue(2 * 9 + 2)) / 1000
 If tempr <> oitem(9 + (Addr - 26) * 10).Value Then oitem(9 + (Addr - 26) * 10).Write tempr
 
 
 tempr = (datavalue(2 * 10 + 1) * 256 + datavalue(2 * 10 + 2)) / 100
 
 If tempr <> oitem(10 + (Addr - 26) * 10).Value Then oitem(10 + (Addr - 26) * 10).Write tempr
Else
   RichTextBox1.Text = RichTextBox1.Text & Chr(10) + Chr(13) & Addr & "号变配电电表未上电或掉线"或者给我讲讲这段程序的大概意思,我对VB里面的关键字啥的看不懂
希望高手指点

解决方案 »

  1.   

    你哪个看不懂了?其实都差不多啊 IF ELSE你总会的吧
      

  2.   


    If UBound(datavalue) > 27 And datavalue(0) = Addr ThenIf tempr <> oitem(j + (Addr - 26) * 10).Value Then oitem(j + (Addr - 26) * 10).Write tempr
    这两行 不懂  UBound是啥   If tempr <>怎么解释
      

  3.   

    不等于吧.Net技术群108412141
    共同学习.Net技术,分享.Net学习资料,分享.Net工作机会
      

  4.   

      Do
      k = k + 1
      MSComm1.InBufferCount = 0
      MSComm1.OutBufferCount = 0
      MSComm1.Output = SendValue
      Sleep (200)
      temp = MSComm1.Input
      datavalue = temp
      Loop Until k = 3 Or UBound(datavalue) > 27
      
    If UBound(datavalue) > 27 And datavalue(0) = Addr Then
     BitN1 = GetBit(datavalue(26), 3)
       BitN2 = GetBit(datavalue(26), 7)
       BitN3 = datavalue(25)
         BitN4 = datavalue(24)
          BitN5 = datavalue(23)
    DO和for的关系是?
      

  5.   

    不想用VB,所以打算把整个程序翻译成C#版本的 用着舒服
      

  6.   

    If UBound(datavalue) > 27 And datavalue(0) = Addr Thenif( datavalue.Length>27 && datavalue[0]== Addr)
      

  7.   

    先用.Net打开你的VB工程,.Net会将vb6.0的 工程转换成VB.Net代码,然后你根据下面这个网站再把VB.Net代码转换成C#的代码http://www.developerfusion.com/tools/convert/vb-to-csharp/
      

  8.   


    do
    {
    k = k + 1
      MSComm1.InBufferCount = 0
      MSComm1.OutBufferCount = 0
      MSComm1.Output = SendValue
      Sleep (200)
      temp = MSComm1.Input
    datavalue = temp
     }while(k = 3 || datavalue.length >= 27)
      
    If (datavalue.length >= 27 && datavalue[0] == Addr)
    {
     BitN1 = GetBit(datavalue[26], 3)
       BitN2 = GetBit(datavalue[26], 7)
       BitN3 = datavalue[25]
         BitN4 = datavalue[24]
          BitN5 = datavalue[23] For (int j = 1; j<= 3;j++)
    {
     tempr = (datavalue[2 * j + 1] * 256 + datavalue[2 * j + 2)] / 10000 * 10 ^ datavalue[23]
     If (tempr != oitem[j + (Addr - 26) * 10].Value)
     oitem[j + (Addr - 26) * 10].Write tempr
    }
     
     
     For (int m = 4 ;m <= 6;m++)
    {
     tempr = (datavalue[2 * m + 1] * 256 + datavalue[2 * m + 2]) / 10000 * 10 ^ datavalue[24]
     If (tempr != oitem[m + (Addr - 26) * 10].Value )
     oitem[m + (Addr - 26) * 10].Write tempr
    }
     
     
      tempr = (datavalue[2 * 7 + 1] * 256 + datavalue[2 * 7 + 2]) / 10000 * 10 ^ datavalue[25] * BitN1
      If (tempr != oitem[7 + (Addr - 26) * 10].Value) 
     oitem[7 + (Addr - 26) * 10].Write tempr
      
      tempr = (datavalue[2 * 8 + 1] * 256 + datavalue[2 * 8 + 2]) / 10000 * 10 ^ datavalue[25] * BitN2
      If (tempr != oitem[8 + (Addr - 26) * 10].Value) 
     oitem[8 + (Addr - 26) * 10].Write tempr
     
     tempr = (datavalue[2 * 9 + 1] * 256 + datavalue[2 * 9 + 2]) / 1000
     If (tempr != oitem(9 + (Addr - 26) * 10).Value) 
     oitem[9 + (Addr - 26) * 10].Write tempr
     
     
     tempr = (datavalue[2 * 10 + 1] * 256 + datavalue[2 * 10 + 2]) / 100
     
     If (tempr != oitem[10 + (Addr - 26) * 10].Value) 
     oitem[10 + (Addr - 26) * 10].Write tempr
    }
    Else
       RichTextBox1.Text = RichTextBox1.Text + "\r\n" +  Addr + "号变配电电表未上电或掉线"
      

  9.   

    UBound 函数与 LBound 函数一起使用,用于确定数组的大小。使用 LBound 函数可以确定数组某一维的下界。所有维的下界均为 0。对于有这样维数的数组,UBound 函数返回以下结果:Dim A(100,3,4)
    语句           返回值 
    UBound(A, 1) 100 
    UBound(A, 2) 3 
    UBound(A, 3) 4 
    这个是网络上介绍 意思是说把数组 A 的 第1个,第2个,第3个 元素 取出来 
    在C# 中  int[] A = new int[3]{100,3,4}
    可以直接用A[0] A[1] A[2] 取出来就可以的啊 
    loop Until 我记得当初我上高中的时候他应该是循环的  UNTIL 是不满足什么条件的时候去循环, 
    对应 C# 你可以直接用 WHILE 
    具体 介绍你看下, 这里 有关于 while  和 until  的情况, while 时候条件 xx>100 Until 时候应该是 xx<=100 
    [例子]
    http://images.cersp.com/article/3003/460000/469000/469005/90002787/305/300800/20070818/1356816.html
    对与 循环 象 
    BASIC 语言 for i=1 to 10 step 1 next i 对应 C# for(int i =1 ;i<=10;i++) { 功能代码段 }IF <> 对应 C# if != C#注意大小写 ,  给你发 工具 
    http://www.developerfusion.com/tools/convert/vb-to-csharp/ 可能有点区别 VB.NET的其他基本一样
      

  10.   

    11点就要去现场了 来不及下载VB编程环境了 回来之后再说 
    C#版本程序基本写好了 就是还有些不明白的地方 
      

  11.   

    每句分号都没加。。自己加下吧
    然后UBOUND是取数组最大下标
    其他的你在看下我帮你转的应该没什么问题了
      

  12.   

    http://www.developerfusion.com/tools/convert/vb-to-csharp/
      

  13.   

    实在是被动,楼主贴这样的代码   居然也有人翻译我就弄不明白了,变量类型都不完整,代码段也不完整,你们是怎么翻译的为了翻译而翻译?LZ好歹也贴个完整的方法或函数   谁知道datavalue、Addr等变量是什么数据类型?这样越弄你反而越乱