首页 \ 问答 \ VB.Net Array.Sort使值无效(VB.Net Array.Sort nullifying values)

VB.Net Array.Sort使值无效(VB.Net Array.Sort nullifying values)

我的VB.net程序中的Array.Sort功能遇到了一些严重问题。 我的代码中的所有内容,包括粘贴在这里的内容似乎都在循环中运行(在我的代码末尾),包括使用我期望的信息填充FinalDataArray, 但是当我将它传递给Array.Sort时,然后我最终得到的FinalDataArray在每个索引处都有一个空值。 有什么可能导致这种情况的想法?

我的代码的适用部分如下:

更新:我已经更新了我的代码块,以显示该程序中的整个Sub。

Private Sub btnDisplay_Click(sender As System.Object, e As System.EventArgs) Handles btnDisplay.Click
    frmMain.CurrentFigure = txtFigure.Text
    frmFigureViewer.Show()
    Dim ArrayUpperBound = FGCFigNo.Length
    FigureResult = Enumerable.Range(0, FGCFigNo.Length).Where(Function(f) FGCFigNo(f) = frmMain.CurrentFigure).ToArray
    frmFigureViewer.lblFGCfromFGCList.Text = FGCCode(FigureResult(0))
    frmFigureViewer.lblTOPCurrentFigureTitle.Text = FGCTitle(FigureResult(0))
    frmFigureViewer.lblTOPDisplayFigure.Text = FGCFigNo(FigureResult(0))
    frmFigureViewer.lblCurrentSheet.Text = FGCSheetNo(FigureResult(0))
    frmFigureViewer.lblFinalSheet.Text = FGCSheetNo(FigureResult(FigureResult.Length - 1))
    ArtResult = FGCArtID(FigureResult(frmFigureViewer.lblCurrentSheet.Text - 1))
    Dim JpgFilePath As String = "C:\Temp\StandaloneRPSTLViewer" + "\" + Mid(ArtResult, 1, ArtResult.Length - 4) + ".jpg"
    If File.Exists(JpgFilePath) Then
        GoTo OnlyDisplay
    End If
    Dim SourceFile As String = ""
    Dim DestinationFile As String = ""
    Dim EpsFilePath As String = ARTFOLDER + "\" + ArtResult
    If Not Directory.Exists("C:\Temp\StandaloneRPSTLViewer") Then
        MkDir("C:\Temp\StandaloneRPSTLViewer")
    End If



    SourceFile = EpsFilePath
    DestinationFile = Mid(EpsFilePath, 1, Len(EpsFilePath) - 4) + " view.eps"
    FileCopy(SourceFile, DestinationFile)

    EpsFilePath = DestinationFile

    RunGS("-q", "-dNOPAUSE", "-dBATCH", "-dSAFER", "-sDEVICE=jpeg", _
      "-r600", "-dJPEGQ=100", "-dEPSCrop", "-dDownScaleFactor=0", "-dTextAlphaBits=4", "-dGraphicsAlphaBits=4", _
      "-sPAPERSIZE=letter", "-sOutputFile=" & JpgFilePath, EpsFilePath)
    Kill(EpsFilePath) 'KILLS THE "...view.eps" temporary file in the working folder.

OnlyDisplay:

    frmFigureViewer.picMyJPEG.Image = Image.FromFile(JpgFilePath)

    Fig036Result = Enumerable.Range(0, FIGURENO.Length).Where(Function(f) FIGURENO(f) = frmMain.CurrentFigure).ToArray

    'BUILD DICTIONARY HERE'
    Dim dict As Dictionary(Of String, String) = New Dictionary(Of String, String)
    Dim DictionaryFigureNumber As Integer = 1
    Dim DictionarySortPosition As Integer = 1
    Do Until DictionaryFigureNumber = 1000
        Dim DictionaryFigureLetterASCII As Integer = 65
        dict.Add(DictionaryFigureNumber, DictionarySortPosition)
        DictionarySortPosition = DictionarySortPosition + 1
        Do Until DictionaryFigureLetterASCII = 91

            dict.Add(DictionaryFigureNumber & Chr(DictionaryFigureLetterASCII), DictionarySortPosition)
            DictionarySortPosition = DictionarySortPosition + 1
            DictionaryFigureLetterASCII = DictionaryFigureLetterASCII + 1
        Loop
        DictionaryFigureNumber = DictionaryFigureNumber + 1
    Loop
    'END OF DICTIONARY BUILDING

    Dim TempLength = Fig036Result.GetLength(0)
    TempLength = TempLength - 1
    Dim CurrentPlace As Integer = 0
    Dim TempItemNo As String
    Dim ArrayString As String = ""
    Do Until CurrentPlace > TempLength

        Dim ArrayLocation As Integer = Fig036Result(CurrentPlace)
        TempItemNo = ITEMNO(ArrayLocation)
        TempSMR = SMnR(ArrayLocation)
        TempNSN = NSN(ArrayLocation)
        TempCAGE = CAGE(ArrayLocation)
        TempPartNum = PARTNUM(ArrayLocation)
        TempDescription = ITEMName(ArrayLocation)
        TempUOC = UOC(ArrayLocation)
        TempQTY = QTYFIG(ArrayLocation)
        TempIndvFGC = FGC(ArrayLocation)
        Dim TempValue As String = ""
        dict.TryGetValue(TempItemNo, TempValue)
        ArrayString = TempValue + "::" + TempItemNo + "|" + TempSMR + "|" + TempNSN + "|" + TempCAGE + "|" + TempPartNum + "|" + TempDescription + "|" + TempUOC + "|" + TempQTY + "|" + TempIndvFGC + "|"
        FinalDataArray(CurrentPlace) = ArrayString

        'FinalSortArray(CurrentPlace) = TempValue

        CurrentPlace = CurrentPlace + 1
    Loop
    Array.Sort(FinalDataArray)

End Sub

Update2:我已经更新了代码的循环部分,如下所示:

Dim TempValue As String = ""
        dict.TryGetValue(TempItemNo, TempValue)
        ArrayString = TempItemNo + "|" + TempSMR + "|" + TempNSN + "|" + TempCAGE + "|" + TempPartNum + "|" + TempDescription + "|" + TempUOC + "|" + TempQTY + "|" + TempIndvFGC + "|"
        FinalDataArray(CurrentPlace) = ArrayString

        FinalSortArray(CurrentPlace) = TempValue

        CurrentPlace = CurrentPlace + 1
    Loop
    Array.Sort(FinalSortArray, FinalDataArray)

我的两个数组的新声明是:

    Public FinalSortArray(50000) As Integer
Public FinalDataArray(50000) As String

I'm having some serious trouble with the Array.Sort functionality within my VB.net program. Everything within my code, including what is pasted here seems to function all the way through the loop (which is at the end of my code), including populating FinalDataArray with the information that I expect, however when I pass it to Array.Sort, then I end up with FinalDataArray having a null value at every index. Any thoughts on what could be causing this?

The applicable portion of my code is as follows:

UPDATE: I've updated my code block to show the entire Sub from this program.

Private Sub btnDisplay_Click(sender As System.Object, e As System.EventArgs) Handles btnDisplay.Click
    frmMain.CurrentFigure = txtFigure.Text
    frmFigureViewer.Show()
    Dim ArrayUpperBound = FGCFigNo.Length
    FigureResult = Enumerable.Range(0, FGCFigNo.Length).Where(Function(f) FGCFigNo(f) = frmMain.CurrentFigure).ToArray
    frmFigureViewer.lblFGCfromFGCList.Text = FGCCode(FigureResult(0))
    frmFigureViewer.lblTOPCurrentFigureTitle.Text = FGCTitle(FigureResult(0))
    frmFigureViewer.lblTOPDisplayFigure.Text = FGCFigNo(FigureResult(0))
    frmFigureViewer.lblCurrentSheet.Text = FGCSheetNo(FigureResult(0))
    frmFigureViewer.lblFinalSheet.Text = FGCSheetNo(FigureResult(FigureResult.Length - 1))
    ArtResult = FGCArtID(FigureResult(frmFigureViewer.lblCurrentSheet.Text - 1))
    Dim JpgFilePath As String = "C:\Temp\StandaloneRPSTLViewer" + "\" + Mid(ArtResult, 1, ArtResult.Length - 4) + ".jpg"
    If File.Exists(JpgFilePath) Then
        GoTo OnlyDisplay
    End If
    Dim SourceFile As String = ""
    Dim DestinationFile As String = ""
    Dim EpsFilePath As String = ARTFOLDER + "\" + ArtResult
    If Not Directory.Exists("C:\Temp\StandaloneRPSTLViewer") Then
        MkDir("C:\Temp\StandaloneRPSTLViewer")
    End If



    SourceFile = EpsFilePath
    DestinationFile = Mid(EpsFilePath, 1, Len(EpsFilePath) - 4) + " view.eps"
    FileCopy(SourceFile, DestinationFile)

    EpsFilePath = DestinationFile

    RunGS("-q", "-dNOPAUSE", "-dBATCH", "-dSAFER", "-sDEVICE=jpeg", _
      "-r600", "-dJPEGQ=100", "-dEPSCrop", "-dDownScaleFactor=0", "-dTextAlphaBits=4", "-dGraphicsAlphaBits=4", _
      "-sPAPERSIZE=letter", "-sOutputFile=" & JpgFilePath, EpsFilePath)
    Kill(EpsFilePath) 'KILLS THE "...view.eps" temporary file in the working folder.

OnlyDisplay:

    frmFigureViewer.picMyJPEG.Image = Image.FromFile(JpgFilePath)

    Fig036Result = Enumerable.Range(0, FIGURENO.Length).Where(Function(f) FIGURENO(f) = frmMain.CurrentFigure).ToArray

    'BUILD DICTIONARY HERE'
    Dim dict As Dictionary(Of String, String) = New Dictionary(Of String, String)
    Dim DictionaryFigureNumber As Integer = 1
    Dim DictionarySortPosition As Integer = 1
    Do Until DictionaryFigureNumber = 1000
        Dim DictionaryFigureLetterASCII As Integer = 65
        dict.Add(DictionaryFigureNumber, DictionarySortPosition)
        DictionarySortPosition = DictionarySortPosition + 1
        Do Until DictionaryFigureLetterASCII = 91

            dict.Add(DictionaryFigureNumber & Chr(DictionaryFigureLetterASCII), DictionarySortPosition)
            DictionarySortPosition = DictionarySortPosition + 1
            DictionaryFigureLetterASCII = DictionaryFigureLetterASCII + 1
        Loop
        DictionaryFigureNumber = DictionaryFigureNumber + 1
    Loop
    'END OF DICTIONARY BUILDING

    Dim TempLength = Fig036Result.GetLength(0)
    TempLength = TempLength - 1
    Dim CurrentPlace As Integer = 0
    Dim TempItemNo As String
    Dim ArrayString As String = ""
    Do Until CurrentPlace > TempLength

        Dim ArrayLocation As Integer = Fig036Result(CurrentPlace)
        TempItemNo = ITEMNO(ArrayLocation)
        TempSMR = SMnR(ArrayLocation)
        TempNSN = NSN(ArrayLocation)
        TempCAGE = CAGE(ArrayLocation)
        TempPartNum = PARTNUM(ArrayLocation)
        TempDescription = ITEMName(ArrayLocation)
        TempUOC = UOC(ArrayLocation)
        TempQTY = QTYFIG(ArrayLocation)
        TempIndvFGC = FGC(ArrayLocation)
        Dim TempValue As String = ""
        dict.TryGetValue(TempItemNo, TempValue)
        ArrayString = TempValue + "::" + TempItemNo + "|" + TempSMR + "|" + TempNSN + "|" + TempCAGE + "|" + TempPartNum + "|" + TempDescription + "|" + TempUOC + "|" + TempQTY + "|" + TempIndvFGC + "|"
        FinalDataArray(CurrentPlace) = ArrayString

        'FinalSortArray(CurrentPlace) = TempValue

        CurrentPlace = CurrentPlace + 1
    Loop
    Array.Sort(FinalDataArray)

End Sub

Update2: I've updated the looping portion of the code as follows:

Dim TempValue As String = ""
        dict.TryGetValue(TempItemNo, TempValue)
        ArrayString = TempItemNo + "|" + TempSMR + "|" + TempNSN + "|" + TempCAGE + "|" + TempPartNum + "|" + TempDescription + "|" + TempUOC + "|" + TempQTY + "|" + TempIndvFGC + "|"
        FinalDataArray(CurrentPlace) = ArrayString

        FinalSortArray(CurrentPlace) = TempValue

        CurrentPlace = CurrentPlace + 1
    Loop
    Array.Sort(FinalSortArray, FinalDataArray)

My new declaration for my two arrays are:

    Public FinalSortArray(50000) As Integer
Public FinalDataArray(50000) As String

原文:https://stackoverflow.com/questions/35301641
更新时间:2022-03-02 15:03

最满意答案

您可以使用DataTable作为计算器:

Dim calc As New DataTable()
Dim result = CType(calc.Compute("1 + 3 * 6 - (2 - 1)", Nothing), Double) ' 18.0

查看DataColumn.Expression的注释以查看所支持的内容。


You can use a DataTable as calculator:

Dim calc As New DataTable()
Dim result = CType(calc.Compute("1 + 3 * 6 - (2 - 1)", Nothing), Double) ' 18.0

Have a look at the remarks of DataColumn.Expression to see what is supported.

相关问答

更多

相关文章

更多

最新问答

更多
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)
  • 是否可以嵌套hazelcast IMaps?(Is it possible to nest hazelcast IMaps? And whick side effects can I expect? Is it a good Idea anyway?)
  • UIViewAnimationOptionRepeat在两个动画之间暂停(UIViewAnimationOptionRepeat pausing in between two animations)
  • 在x-kendo-template中使用Razor查询(Using Razor query within x-kendo-template)
  • 在BeautifulSoup中替换文本而不转义(Replace text without escaping in BeautifulSoup)
  • 如何在存根或模拟不存在的方法时配置Rspec以引发错误?(How can I configure Rspec to raise error when stubbing or mocking non-existing methods?)
  • asp用javascript(asp with javascript)
  • “%()s”在sql查询中的含义是什么?(What does “%()s” means in sql query?)
  • 如何为其编辑的内容提供自定义UITableViewCell上下文?(How to give a custom UITableViewCell context of what it is editing?)
  • c ++十进制到二进制,然后使用操作,然后回到十进制(c++ Decimal to binary, then use operation, then back to decimal)
  • 以编程方式创建视频?(Create videos programmatically?)
  • 无法在BeautifulSoup中正确解析数据(Unable to parse data correctly in BeautifulSoup)
  • webform和mvc的区别 知乎
  • 如何使用wadl2java生成REST服务模板,其中POST / PUT方法具有参数?(How do you generate REST service template with wadl2java where POST/PUT methods have parameters?)
  • 我无法理解我的travis构建有什么问题(I am having trouble understanding what is wrong with my travis build)
  • iOS9 Scope Bar出现在Search Bar后面或旁边(iOS9 Scope Bar appears either behind or beside Search Bar)
  • 为什么开机慢上面还显示;Inetrnet,Explorer
  • 有关调用远程WCF服务的超时问题(Timeout Question about Invoking a Remote WCF Service)