VB数据读取中碰到的问题。意为提取第23行的字符。代码如下:VB codePrivate Sub Command1_Click()ComDiaReade
VB数据读取中碰到的问题。
意为提取第23行的字符。
代码如下:
VB codePrivate Sub Command1_Click() ComDiaReader.ShowOpen filePath = ComDiaReader.FileName Open filePath For Input As #1 Do While Not EOF(1) Line Input #1, dataStr i = i + 1 Select Case i Case 23 Text1.Text = dataStr End Select Loop Close #1 End Sub
其实这段代码,我不是十分理解的。
dataStr不是把所有的行都赋值给dataStr的?
那后面的循环好像无意义。
而且循环只执行了一次,不知道为什么。
文件片段(开头)如下:
#cP1992 2 16 0 0 0.00000000 96 d IGS05 FIT SIO
## 632 0.00000000 900.00000000 48668 0.0000000000000
+ 16 G02G03G06G11G12G13G14G15G16G17G18G19G20G21G23G24 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
%c G cc GPS ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc
%c cc cc ccc ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc
%f 1.2500000 1.025000000 0.00000000000 0.000000000000000
%f 0.0000000 0.000000000 0.00000000000 0.000000000000000
%i 0 0 0 0 0 0 0 0 0
%i 0 0 0 0 0 0 0 0 0
/*
/*
/*
/* PCV:IGS05 OL/ALL:FES2004 Y NONE YN ORB:CoN CLK:CoN
* 1992 2 16 0 0 0.00000000
PG02 -23597.590869 -12667.682039 1554.063157 999999.999999
PG03 1460.140660 22088.715168 14061.744256 999999.999999
PG06 -23940.436948 1723.694818 11368.771562 999999.999999
PG11 11063.677380 -21676.635131 11463.607676 999999.999999
PG12 -10072.047715 14169.403659 -19734.439331 999999.999999
PG13 -12481.585169 2624.089443 -23212.852880 999999.999999
[解决办法]VB codeOption ExplicitPrivate Sub Command1_Click() Dim FileNumber As Integer Dim sFile() As String, S As String Dim FileByte() As Byte FileNumber = FreeFile ' 设置“CancelError”为 True ComDiaReader.CancelError = True On Error GoTo ErrHandler ' 设置标志 ComDiaReader.Flags = cdlOFNHideReadOnly ' 设置过滤器 ComDiaReader.Filter = "All Files (*.*)|*.*|Text Files" & "(*.txt)|*.txt|" ' 指定缺省的过滤器 ComDiaReader.FilterIndex = 2 ' 显示“打开”对话框 ComDiaReader.ShowOpen ' 显示选定文件的名字 Open ComDiaReader.FileName For Binary As #FileNumber ReDim FileByte(LOF(FileNumber) - 1) Get #FileNumber, , FileByte S = StrConv(FileByte, vbUnicode) sFile = Split(S, vbCrLf) Text1.Text = sFile(22) Close #FileNumber Erase sFile Exit Sub ErrHandler: ' 用户按了“取消”按钮 Exit SubEnd Sub
[解决办法]
Private Sub Command1_Click()
Open "c:\222.txt" For Input As #1
i=1
Do While Not EOF(1)
Line Input #1, dataStr '读一行,下次读的时候,上次读到的被抛弃
if i=23 then
exit do
end if
i = i + 1
dataStr ="",必须,否则,读到的可能不是23行的数据,如果行数小于23则会将最后一行数据留在里面
Loop
Close #1
End Sub