我有一个vbscript文件正在读取文件并将每一行发送到终端程序。当它在字符串中间的分号时,它会在字符串处分割分号。
我一直在使用这段代码与其他字符串没有任何问题。脚本正在读取的文件中每行有一个字符串。
导致问题的文件中的字符串是:2101; 99PSP
这是我正在使用的代码(使用名为Reflections的终端仿真程序):
Sub NarcoticOrderableItemTurnOff()
''# Constants used by OpenTextFile()
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Const ICON_INFO = 64 ''# Information message; displays 'i' icon.
Set wshshell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = _
objFSO.OpenTextFile("P:\NarcoticOrderableItems.txt", ForReading)
Session.Transmit "^Orderable Item Edit (CPRS)" & vbCr
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.ReadLine
arrC2oderableItemList = Split(strNextLine, ";", 3)
'arrServiceList(0) = Area of Use
'arrServiceList(2) = Printer for that area of use
With Session
.WaitForString "Select ORDERABLE ITEMS NAME:"
.Transmit arrC2oderableItemList(0) & vbCr
.WaitForString "//"
.Transmit "N" & vbCr
.WaitForString "//"
.Transmit vbCr
.WaitForString "//"
.Transmit vbCr
.WaitForString "//"
.Transmit vbCr
End With
Loop
objTextFile.close
Session.MsgBox "All done! C2 Orderable Items turned off!", vbExclamation
''#ErrorHandler:
''# Session.MsgBox Err.Description, vbExclamation + vbOKOnly
End Sub
答案 0 :(得分:1)
我认为它可能包含以下一行代码:
arrC2oderableItemList = Split(strNextLine, ";", 3)
答案 1 :(得分:1)
如果此问题字符串是您正在阅读的文件的整行:
2101;99PSP
问题是你试图从每一行获得3个项目而这个只有2个。要考虑没有第3个项目的行,你应该从你的Split功能中删除第3个参数然后检查使用第3项之前的数组的UBound。
arrC2oderableItemList = Split(strNextLine, ";")
If UBound(arrC2oderableItemList) >= 2 Then
''# There are 3 items or more in the Array (O-based)
''# Can do something with arrC2oderableItemList(2)
Else
''# There are only 2 items (or less) in the Array
''# Do not use arrC2oderableItemList(2)
End If
答案 2 :(得分:1)
如果您以分号分隔行,但文本包含额外的分号,则必须
或者采取简单的路线,不要在你的阅读文件中留出额外的分号。
发布一些示例行(包括问题行)将允许某人帮助您编写代码以搜索额外的分号。
如果(2101; 99PSP)就在线上,请参阅Shawn Steward的回答。