怎么读取一个文本里的前32个数据作为Y值打印曲线
如何读取一个文本里的前32个数据作为Y值打印曲线
有一个文本数据,形式如图所示
现在只需要读取前五行(因为第一行是空行,也就是前四行数据),即前32个数据,作为Y值,每个Y值对应的X值已经固定了。然后打印曲线。
因为要对每一个数据进行计算,所以想读取前32个数据到textbox,每一个数据对应一个个textbox。
或者把前32个数据存到一个数组中也行
虽然有想法,但是没能实现,初学,大家多给讲解一下!谢谢
------解决方案--------------------
有一个文本数据,形式如图所示
- VB code
-0.017 -0.014 -0.015 -0.017 -0.013 -0.025 -0.016 0.008 -0.019 -0.014 -0.018 -0.041 -0.025 -0.025 -0.020 -0.019 -0.008 -0.026 -0.025 -0.020 -0.022 -0.020 -0.020 -0.035 -0.025 -0.017 -0.022 -0.020 -0.020 -0.019 -0.022 -0.028 -0.018 -0.020 -0.016 -0.017 -0.028 -0.030 -0.027 -0.015 -0.015 -0.021 -0.002 -0.016 -0.014 -0.020 -0.026 -0.012 -0.013 -0.011 -0.016 -0.016 -0.018 -0.022 -0.020 -0.020 -0.021 -0.014 -0.018 -0.032 -0.019 -0.018 -0.037 -0.030 -0.063 -0.039 -0.156 -0.057 -0.069 -0.063 -0.036 -0.079 7685.813 -0.041 0.060 -0.045 -0.111 -0.098 -0.075 -0.083 -0.126 -0.097 -0.039 -0.089 -0.114 -0.077 -0.077 -0.080 -0.094 -0.119 -0.053 0.008 -0.131 -0.083 -0.068 -0.037
现在只需要读取前五行(因为第一行是空行,也就是前四行数据),即前32个数据,作为Y值,每个Y值对应的X值已经固定了。然后打印曲线。
因为要对每一个数据进行计算,所以想读取前32个数据到textbox,每一个数据对应一个个textbox。
或者把前32个数据存到一个数组中也行
虽然有想法,但是没能实现,初学,大家多给讲解一下!谢谢
------解决方案--------------------
- VB code
Public Function Read32(ByVal sFileName As String) As Single() '从指定文件中读取每段的前32个数值(4行) ' '返回值: ' 所有读取到的数值 ' Dim lFn As Long, sBuff As String, LineBuff() As String, sTmp() As String, OutBuff() As Single Dim I As Long, J As Long, K As Long, L As Long, IsNewBlock As Boolean lFn = FreeFile Open sFileName For Binary As #lFn sBuff = Space(LOF(lFn)) Get #lFn, , sBuff Close #1 For I = 1 To 4 sBuff = Replace(sBuff, " ", " ") Next sBuff = Replace(sBuff, Chr(0), "") Debug.Print sBuff IsNewBlock = False L = -1 ReDim OutBuff(0) LineBuff() = Split(sBuff, vbCrLf) For I = 0 To UBound(LineBuff) LineBuff(I) = Trim(LineBuff(I)) If Len(LineBuff(I)) > 4 Then '是否有效行 If J > -1 Then J = J + 1 '当前段读取行数计数 If J = 5 Then '当前行是第5行了 J = -1 '初始化行数,等待下一个空行 Else sTmp() = Split(LineBuff(I), " ") '按空格拆分当前行的数据 For K = 0 To UBound(sTmp) L = L + 1 ReDim Preserve OutBuff(L) OutBuff(L) = CSng(sTmp(K)) Next End If End If Else J = 0 End If Next K = -1 For I = 0 To (UBound(OutBuff) + 1) / 8 - 1 For J = 0 To 7 K = K + 1 Debug.Print OutBuff(K), Next Debug.Print Next Read32 = OutBuff End Function