首页 > 解决方案 > 在VB中将空格转换为int会导致错误

问题描述

我们有一个用 VB 编写的旧应用程序来解析文件。尝试将空格转换为整数时出现错误。我认为程序应该继续并为LoadNumber分配 0 。这可能与旧的 VB 库文件有关吗?因为我在 Visual Studio 的 VB 控制台应用程序中运行了代码,它似乎运行良好。我如何找出导致问题的原因?

Overridable Sub Parse01()
BOLNumber = InputLine.Substring(12, 20)
SourceNumber = InputLine.Substring(2, 5)

Carrier = InputLine.Substring(116, 6)
Driver = InputLine.Substring(37, 15)
DateFinished = InputLine.Substring(77, 8)
TimeFinished = InputLine.Substring(87, 2) & ":" & InputLine.Substring(89, 2)
Finish_DateTime = DateFinished.ToString & " " & TimeFinished
TruckNumber = InputLine.Substring(124, 5)

'LoadNumber = InputLine.Substring(107, 7)

Dim loadNumberAsInt As Integer
If Integer.TryParse(InputLine.Substring(107, 7), loadNumberAsInt) Then
    LoadNumber = InputLine.Substring(107, 7)
Else
    LoadNumber = "0"
End If

CustomerNumber = InputLine.Substring(57, 15)
TimeIn = InputLine.Substring(91, 4)

End Sub

错误

Could not process the file for shipper:0001 - Conversion from string "               " to type 'Integer' is not valid. -    at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value)
       at Program.Reader.Parse01()
       at Program.Reader.ProcessRecords()
       at Program.Reader.ParseInputLine()
       at Program.Reader.Parse(String Path)
       at Program.Reader.ProcessFile(String Source, String Number, EDI_File_Reader EDI_R)

标签: vb.net

解决方案


错误信息中有 15 个空格。所以问题将出在其他地方。我想它可能在这里。

CustomerNumber = InputLine.Substring(57, 15)

也许 CustomerNumber 应该是一个字符串。如果没有,那么我建议你也对这个做一个 TryParse。


推荐阅读