目前进度:已分布分时图数据格式在http://www.cnblogs.com/same/articles/722400.html,这里公布两种代码VB6 和VB2005 作用一样
①VB6
Public tempdata() As Long
Public NumBase(5) As Long '基数
Public NumUnit(4) As Long '每单位对应的16进制数
Public NumUnitPrice(4) As Long '每单位对于的10进制数,已被从元为单位扩大1000倍
Public NumBase(5) As Long '基数
Public NumUnit(4) As Long '每单位对应的16进制数
Public NumUnitPrice(4) As Long '每单位对于的10进制数,已被从元为单位扩大1000倍
Public Type tempFSTrecord '每一条记录的长度为26字节:
FSTtime As Integer
price As Long
avgPrice As Long
changor As Integer
unUse0 As Integer
unUse1 As Long
unUse2 As Long
unUse3 As Long
End Type
Function LoadFSTdata(ByVal filename As String, fst() As FSTrecord) '240个分记录,26个字节一个记录,6508字节一天
Dim ifile As Integer, i As Integer, j As Integer
Dim TFR As tempFSTrecord
Dim fileP As Long
Dim lenDayFST As Long: longDayFST = 6508
Dim lenminuteFST As Long: lenminuteFST = 26
ifile = FreeFile
Open filename For Binary As ifile
'LoadFSTdata = (LOF(ifile) - 8) / 26 - 10
LoadFSTdata = LOF(ifile) / 6508
ReDim fst(1 To LoadFSTdata, 239)
ReDim tempdata(1 To LoadFSTdata)
ReDim tempMidprice(1 To LoadFSTdata)
ReDim fstMaxPrice(1 To LoadFSTdata)
For j = 1 To LoadFSTdata
Get ifile, 1 + (j - 1) * longDayFST, tempdata(j)
Get ifile, 5 + (j - 1) * longDayFST, tempMidprice(j)
fstMaxPrice(j) = 0
For i = 0 To 239
fileP = (j - 1) * longDayFST + i * lenminuteFST + 8 + 1
Get ifile, fileP, TFR
fst(j, i).FSTtime = TFR.FSTtime + 1 'fst(i).FSTtime = TimeSerial(0, TFR.FSTtime + 1, 0)
fst(j, i).price = TFR.price
fst(j, i).avgPrice = TFR.avgPrice
fst(j, i).changor = TFR.changor
If Abs(TFR.price - tempMidprice(j)) > fstMaxPrice(j) Then
fstMaxPrice(j) = Abs(TFR.price - tempMidprice(j))
End If
Next i
Next j
Close ifile
End Function
FSTtime As Integer
price As Long
avgPrice As Long
changor As Integer
unUse0 As Integer
unUse1 As Long
unUse2 As Long
unUse3 As Long
End Type
Function LoadFSTdata(ByVal filename As String, fst() As FSTrecord) '240个分记录,26个字节一个记录,6508字节一天
Dim ifile As Integer, i As Integer, j As Integer
Dim TFR As tempFSTrecord
Dim fileP As Long
Dim lenDayFST As Long: longDayFST = 6508
Dim lenminuteFST As Long: lenminuteFST = 26
ifile = FreeFile
Open filename For Binary As ifile
'LoadFSTdata = (LOF(ifile) - 8) / 26 - 10
LoadFSTdata = LOF(ifile) / 6508
ReDim fst(1 To LoadFSTdata, 239)
ReDim tempdata(1 To LoadFSTdata)
ReDim tempMidprice(1 To LoadFSTdata)
ReDim fstMaxPrice(1 To LoadFSTdata)
For j = 1 To LoadFSTdata
Get ifile, 1 + (j - 1) * longDayFST, tempdata(j)
Get ifile, 5 + (j - 1) * longDayFST, tempMidprice(j)
fstMaxPrice(j) = 0
For i = 0 To 239
fileP = (j - 1) * longDayFST + i * lenminuteFST + 8 + 1
Get ifile, fileP, TFR
fst(j, i).FSTtime = TFR.FSTtime + 1 'fst(i).FSTtime = TimeSerial(0, TFR.FSTtime + 1, 0)
fst(j, i).price = TFR.price
fst(j, i).avgPrice = TFR.avgPrice
fst(j, i).changor = TFR.changor
If Abs(TFR.price - tempMidprice(j)) > fstMaxPrice(j) Then
fstMaxPrice(j) = Abs(TFR.price - tempMidprice(j))
End If
Next i
Next j
Close ifile
End Function
Function getRealPrice(formerPrice As Long) As Long '注意移植此函数是要把公共变量NumBase预NumUnit移动移植
Dim i As Integer
For i = 1 To 4 '该函数可返回32元人民币以下对于的准确价格
If formerPrice < NumBase(i) Then
getRealPrice = (Val((formerPrice - NumBase(i - 1)) & "000") / NumUnit(i - 1)) + NumUnitPrice(i - 1)
Exit For ' & 000 相当于 * 1000,以‰为单位
End If
Next i
End Function
Dim i As Integer
For i = 1 To 4 '该函数可返回32元人民币以下对于的准确价格
If formerPrice < NumBase(i) Then
getRealPrice = (Val((formerPrice - NumBase(i - 1)) & "000") / NumUnit(i - 1)) + NumUnitPrice(i - 1)
Exit For ' & 000 相当于 * 1000,以‰为单位
End If
Next i
End Function
Public Sub main()
NumBase(0) = 1065353216: NumBase(1) = 1082130432: NumBase(2) = 1090519040: NumBase(3) = 1098907648: NumBase(4) = 1109655552 ': NumBase(5) = 1118830592
NumUnit(0) = 4194304: NumUnit(1) = 2097152: NumUnit(2) = 1048576: NumUnit(3) = 524288 ': NumUnit(4) = 262144
NumUnitPrice(0) = 0: NumUnitPrice(1) = 4000: NumUnitPrice(2) = 8000: NumUnitPrice(3) = 16000 ': NumUnitPrice(4) = 32000
readZST.Show'由这个窗体去调用以上的函数,自己写
End Sub
NumBase(0) = 1065353216: NumBase(1) = 1082130432: NumBase(2) = 1090519040: NumBase(3) = 1098907648: NumBase(4) = 1109655552 ': NumBase(5) = 1118830592
NumUnit(0) = 4194304: NumUnit(1) = 2097152: NumUnit(2) = 1048576: NumUnit(3) = 524288 ': NumUnit(4) = 262144
NumUnitPrice(0) = 0: NumUnitPrice(1) = 4000: NumUnitPrice(2) = 8000: NumUnitPrice(3) = 16000 ': NumUnitPrice(4) = 32000
readZST.Show'由这个窗体去调用以上的函数,自己写
End Sub
② VB2005代码