现在有一个系统,差不多一秒中产生32个整形数据的记录,我打算先把这些数据存到内存中,然后每隔2分钟往硬盘的文件中写一次(总共32*120个数据),一天一个数据文件,所以我定义了一个二维数组myData(31,119)来临时存储采集的数据,请大家帮我分析分析是什么文件存储比较好,要是用随机的方式打开文件,我又不知道怎么一次性把整个二维数据存储到文件中(我只知道自定义的数据结构可以),大家都有什么好的办法
解决方案 »
- 不使用ImageOle.dll向RichtTextbox中插入GIF,但释放错误
- Telnet 登陆邮件服务器后 无法输入命令?
- "Validate and CausesValidation" I LOVE YOU!
- 跪求active report的教程文档!
- 如何在picture控件中平铺一幅图?
- 打包讨论!欢迎vb高手发言!
- 怎样测试sqlserver服务器的存在?
- 关于ado的问题!请各位大侠帮助
- 十万火急,如何解决?
- 可不可以用户下载一个程序安装后,可以在这个程序中修改网站上注册的用户名或密码,不用在网站登录,用它就可以了?
- 请各位大哥,帮一下小弟吧!如何实现数据批量录入呀!我把每个字段对应一个文本框,但一次只能存入数据库中一条记录
- VB中关于字符串截取的问题
Open "d:\record\" & Format(Now, "yymmdd") & ".dat" For Append As #1
For i = 0 To 119
Write #1, sample_value_time(1, i), sample_value_data(0, i), sample_value_data(0, i), sample_value_data(1, i), sample_value_data(2, i), sample_value_data(3, i), sample_value_data(4, i), sample_value_data(5, i), sample_value_data(6, i), sample_value_data(7, i), sample_value_data(8, i), sample_value_data(9, i), sample_value_data(10, i), sample_value_data(11, i), sample_value_data(12, i), sample_value_data(13, i), sample_value_data(14, i), sample_value_data(15, i), sample_value_data(16, i), sample_value_data(17, i), sample_value_data(18, i), sample_value_data(19, i), sample_value_data(20, i), sample_value_data(21, i), sample_value_data(22, i), sample_value_data(23, i), sample_value_data(24, i), sample_value_data(25, i), sample_value_data(26, i), sample_value_data(27, i), sample_value_data(28, i), sample_value_data(29, i), sample_value_data(30, i), sample_value_data(31, i)
Next i
Close #1
Option ExplicitDim data() As Long
Private Sub Command1_Click()
Dim i As Long
Dim j As Long
'设置数据
ReDim data(1 To 3, 1 To 4)
For i = 1 To 3
For j = 1 To 4
data(i, j) = i * j
Next j
Next i
'写入文件
Open "c:\111.txt" For Binary As #1
Put #1, , data
Close #1
'擦除数据
Erase data
'重新定义数组大小
ReDim data(1 To 3, 1 To 4)
'读入刚才写入的文件
Open "c:\111.txt" For Binary As #1
Get #1, , data
Close #1
End Sub
搂住并不需要在文本中打开这个文件来进行查看,所以不需要加入分割。我的方法所保存的文件在记事本中你看到的是乱码,如果需要查看的话,就必须在保存之前将数据变成文本然后保存。读入的时候再将文本变为数据,这样影响效率。
由于在内存中date型占用8个字节,你可以使用四个integer型的长度来存储时间。
你可以定义一个这样的数组,myData(1 to 36,1 to 120) as integer,前1到32个元素存放每一组的数据。注意这种定义的方式每一组数据在内存中的顺序是连在一起的。33到36这四个元素存放时间。然后是用copymemory函数。
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal ByteLen As Long)再定义一个date型的数据myDate = Now
然后使用copymemory myData(33,i),myDate,8
就可以把时间拷贝到数组中了。
当你需要读取时间的时候,你使用copymemory myDate,myData(33,i),8
就可以读出你所需要的时间。
得到已经打开的文件长度使用Lof函数,得到没有打开的文件长度使用FileLen函数