【问题标题】:How to understand what my vb decompiler have decompiled如何理解我的 vb 反编译器已经反编译了什么
【发布时间】:2017-06-20 18:23:20
【问题描述】:

好的,伙计们,我已经反编译了一个反编译了这个解决方案的程序。 有人可以翻译这个解决方案,因为我不知道那是什么。语言是VB.net

  • 结构方案
  • indeks 是索引
  • kriterij 是规范
  • proizvod 是产品
  • prodaja 正在销售
  • regija 是地区
  • sveprodaje 是所有出售的产品
  • trosak 负责

代码如下:

    Public Sub konsolidiraj(ByVal kriterij As Integer)
        Dim num As Integer
        Dim proizvodArray As Form1.Proizvod()
        Dim num1 As Integer
        If (kriterij = 0) Then
            Dim upperBound As Integer = Me.sveProdaje.GetUpperBound(0)
            For i As Integer = 0 To upperBound
                Dim prodajaArray As Form1.Prodaja() = Me.sveProdaje
                Dim num2 As Integer = i
                Dim num3 As Integer = Me.vratiIndeks(prodajaArray(num2).naziv)
                num = prodajaArray(num2).kolicina
                If (Operators.CompareString(prodajaArray(num2).regija, "Central", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num3
                    proizvodArray(num1).ukupnoCentral = proizvodArray(num1).ukupnoCentral + num
                ElseIf (Operators.CompareString(prodajaArray(num2).regija, "East", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num3
                    proizvodArray(num1).ukupnoEast = proizvodArray(num1).ukupnoEast + num
                ElseIf (Operators.CompareString(prodajaArray(num2).regija, "West", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num3
                    proizvodArray(num1).ukupnoWest = proizvodArray(num1).ukupnoWest + num
                End If
            Next

        End If
        If (kriterij = 1) Then
            Dim upperBound1 As Integer = Me.sveProdaje.GetUpperBound(0)
            For j As Integer = 0 To upperBound1
                Dim prodajaArray1 As Form1.Prodaja() = Me.sveProdaje
                Dim num4 As Integer = j
                Dim num5 As Integer = Me.vratiIndeks(prodajaArray1(num4).naziv)
                num = prodajaArray1(num4).prihod
                If (Operators.CompareString(prodajaArray1(num4).regija, "Central", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num5
                    proizvodArray(num1).ukupnoCentral = proizvodArray(num1).ukupnoCentral + num
                ElseIf (Operators.CompareString(prodajaArray1(num4).regija, "East", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num5
                    proizvodArray(num1).ukupnoEast = proizvodArray(num1).ukupnoEast + num
                ElseIf (Operators.CompareString(prodajaArray1(num4).regija, "West", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num5
                    proizvodArray(num1).ukupnoWest = proizvodArray(num1).ukupnoWest + num
                End If
            Next

        End If
        If (kriterij = 2) Then
            Dim upperBound2 As Integer = Me.sveProdaje.GetUpperBound(0)
            For k As Integer = 0 To upperBound2
                Dim prodajaArray2 As Form1.Prodaja() = Me.sveProdaje
                Dim num6 As Integer = k
                Dim num7 As Integer = Me.vratiIndeks(prodajaArray2(num6).naziv)
                num = prodajaArray2(num6).trosak
                If (Operators.CompareString(prodajaArray2(num6).regija, "Central", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num7
                    proizvodArray(num1).ukupnoCentral = proizvodArray(num1).ukupnoCentral + num
                ElseIf (Operators.CompareString(prodajaArray2(num6).regija, "East", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num7
                    proizvodArray(num1).ukupnoEast = proizvodArray(num1).ukupnoEast + num
                ElseIf (Operators.CompareString(prodajaArray2(num6).regija, "West", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num7
                    proizvodArray(num1).ukupnoWest = proizvodArray(num1).ukupnoWest + num
                End If
            Next

        End If
        If (kriterij = 3) Then
            Dim upperBound3 As Integer = Me.sveProdaje.GetUpperBound(0)
            For l As Integer = 0 To upperBound3
                Dim prodajaArray3 As Form1.Prodaja() = Me.sveProdaje
                Dim num8 As Integer = l
                Dim num9 As Integer = Me.vratiIndeks(prodajaArray3(num8).naziv)
                num = prodajaArray3(num8).dobit
                If (Operators.CompareString(prodajaArray3(num8).regija, "Central", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num9
                    proizvodArray(num1).ukupnoCentral = proizvodArray(num1).ukupnoCentral + num
                ElseIf (Operators.CompareString(prodajaArray3(num8).regija, "East", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num9
                    proizvodArray(num1).ukupnoEast = proizvodArray(num1).ukupnoEast + num
                ElseIf (Operators.CompareString(prodajaArray3(num8).regija, "West", False) = 0) Then
                    proizvodArray = Me.sviProizvodi
                    num1 = num9
                    proizvodArray(num1).ukupnoWest = proizvodArray(num1).ukupnoWest + num
                End If
            Next

        End If
    End Sub

【问题讨论】:

  • 为什么?该程序有什么问题,它看起来(除了波兰语 ? 变量名)适度可读?你要翻译什么?
  • 我要求简单的答案,我需要简化代码
  • 再一次,你应该解释为什么?这段代码当然可以简化,但没有什么难的。从上面发布的代码中你有什么不明白的?说说你想要翻译的内容,以及为什么你不明白某些事情
  • 不明白这段代码能做什么,这段代码是什么意思,这段代码的目的是什么?
  • 我认为您将 SO 误认为是翻译服务。请阅读:stackoverflow.com/help/how-to-ask

标签: vb.net decompiling


【解决方案1】:

我所能做的就是让您知道 VB 字符串相等运算符与 C# 有一些语义差异,例如,还有更多的功能。如果指定了Option Compare Text 选项,它能够在大小写不匹配的情况下将字符串视为相等。因此,您看到的 Operators.CompareString() 调用是工作中的字符串相等运算符。

当两者相等时,运算符返回 0 所以当你看到诸如

之类的代码时
If (Operators.CompareString(prodajaArray(num2).regija, "East", False) = 0) Then

也就是说,原来写的代码是

Option Compare Binary    ' At the top of the file. But this is implied if it isn't specified.
' Skip down to a method for the following code.
If prodajaArray(num2).regija = "East" Then

如果已指定Option Compare Text,则最后一部分将显示为"East", True) = 0) Then

【讨论】:

    猜你喜欢
    • 2017-08-18
    • 1970-01-01
    • 2017-07-03
    • 2016-10-18
    • 1970-01-01
    • 2013-04-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多