首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB数据读取中碰到的有关问题

2012-05-12 
VB数据读取中碰到的问题。意为提取第23行的字符。代码如下:VB codePrivate Sub Command1_Click()ComDiaReade

VB数据读取中碰到的问题。
意为提取第23行的字符。
代码如下:

VB code
Private 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 code
Option 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

热点排行