说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB使用WriteFile 块读写数据

HTML文档下载 WORD文档下载 PDF文档下载
VB使用WriteFile 块读写数据
概述
Win32 API 提供了OpenFile 和 WriteFile 函数, 可以对二进制的文件进行读/写。 这两个函数使读/写格式化的文件更加灵活。 这里演示了操作大量格式化数组的一种技巧, 一次完成, 无须一个一个地操作。

实现步骤
1 打开一个新的工程。 增加一个 MODULE1.BAS。

2 把下面的代码复制到 MODULE1.BAS。

Public Const GENERIC_WRITE = &H40000000
Public Const GENERIC_READ = &H80000000
Const FILE_ATTRIBUTE_NORMAL = &H80
Const CREATE_ALWAYS = 2
Const OPEN_ALWAYS = 4
Const INVALID_HANDLE_VALUE= -1
Const FILE_NAME = "TEST.DAT" '任意一个文件名称

Type MyType
value As Integer
End Type

Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, _
lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, _
lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long

Private Declare Function WriteFile Lib "kernel32" ( _
ByVal hFile As Long, lpBuffer As Any, _
ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long

Private Declare Function CreateFile Lib "kernel32" _
Alias "CreateFileA" (ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, _
ByVal lpSecurityAttributes As Long, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) _
As Long

Declare Function FlushFileBuffers Lib "kernel32" ( _
ByVal hFile As Long) As Long

Sub fillArray(anArray() As MyType)
Dim x As Integer

For x = 0 To UBound(anArray)
anArray(x).value = x
Next x
End Sub

Sub Main()
Dim fHandle As Integer
Dim T(1000) As MyType '定义一个大数组
Dim S(1000) As MyType '定义又一个大数组

fillArray T '填充
writearray FILE_NAME, T '把整个数组写入文件
readArray FILE_NAME, S '读到另一个数组
End Sub

Sub readArray(Fname As String, anArray() As MyType)
Dim fHandle As Long
Dim fSuccess As Long
Dim sTest As String
Dim lBytesRead As Long
Dim BytesToRead As Long

'取数据大小
BytesToRead = (UBound(anArray) + 1) * LenB(anArray(0))
'取 Fname 的句柄
fHandle = CreateFile(Fname, GENERIC_WRITE Or GENERIC_READ, _
0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)
'CreateFile 失败的话返回 INVALID_HANDLE_VALUE
If fhandle <> INVALID_HANDLE_VALUE Then
fSuccess = ReadFile(fHandle, anArray(LBound(anArray)), _
BytesToRead, lBytesRead, 0)
'ReadFile 成功后返回一个非 0 值
'关闭文件
fSuccess = CloseHandle(fHandle)
End If
End Sub

Sub writearray(Fname As String, anArray() As MyType)
Dim fHandle As Long
Dim fSuccess As Long
Dim sTest As String
Dim lBytesWritten As Long
Dim BytesToWrite As Long
'取数据大小
BytesToWrite = (UBound(anArray) + 1) * LenB(anArray(0))
'取 Fname 的句柄
fHandle = CreateFile(Fname, GENERIC_WRITE Or GENERIC_READ, _
0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)
'CreateFile 失败的话返回 INVALID_HANDLE_VALUE
If fhandle <> INVALID_HANDLE_VALUE Then
fSuccess = WriteFile(fHandle, anArray(LBound(anArray)), _
BytesToWrite, lBytesWritten, 0)
'WriteFile 成功后返回一个非 0 值
If fSuccess <> 0 Then
'刷新文件缓冲, 马上写入数据
fSuccess = FlushFileBuffers(fHandle)
'关闭文件
fSuccess = CloseHandle(fHandle)
End If
End If
End Sub

3 在菜单 “工程”-“工程1 属性”中, 设置“启动对象” 为 “Sub Main”。

4 按 F5 开始运行。
吴义坚:创业去!我用深度神经网络,处理语音识别 浅谈用户体验的“反面模式 可穿戴设备又一站:增强现实眼镜CastAR 数字医疗投资将破纪录 投资人看好这些细分领域 Mayer又下一城:雅虎收购Tumblr推进移动化? 前端开发利器:代码预处理工具Prepros 一个轻量级的JavaScript库:Reactor.js [探讨] 用户体验设计师现在面临怎样的机遇和挑战? PPT集萃(二):淘宝、CloudStack等分享的架构经验与最佳实践 2013中国云计算榜单之二:64家云主机+云存储,错综复杂! 看Java技术基础的eBay如何评价他们的Node.js首次尝鲜 Jolla发布首款Sailfish系统手机 无缝兼容Android应用 NPD:全球智能手机出货量2013年将首次超过功能手机 聚合数据左磊:不走寻常路 做国内最好的数据聚合平台 从程序员到软件商 需要注意些什么? 共享软件海外营销策略与实战(上海站) 直接拿来用!最火的Android开源项目(完结篇) 一步加入云生态系统 参加第五届中国云计算大会的十大理由 传苹果iOS7将深度整合Flickr 用户受益最大 Chrome 27来了:页面加载快5% 可同步数据到Google Drive 微软发布新一代游戏主机Xbox One 搭配全新Kinect 2.0体感系统 Unity游戏引擎向iOS与Android开发者免费 Twitter获“下拉刷新”专利 开发者仍可自由使用 复杂产品的响应式设计【流程篇】 使用Javassist库为Bytecode Instrumentation开发JVM Agent 内容解析创业公司Stremor推出4款API 2013中国云计算榜单之三:174家云应用服务商,繁花似锦! 盘点各大云服务提供商:麦当劳=AWS,汉堡王=? BlackBerry Jam亚洲开发者大会9月将在香港开幕 把服务器搬进来:Splashtop在中国搭建Bridging Cloud Web框架全对比第五期 新增Windows环境 怎么没有人理俺泥?? 关于dw的问题 FAST.lib 2000 for windows是个什么东东 请问各位一个非常简单的问题 jdk和jvm 笨蛋 大家有什么建议吗? ASP.net如何刷新另一个页面 有一年delphi工作经验的程序员在全国各地的待遇如何?哪个城市有发展前途(钱途)? 100分求解!!!这个问题大家都来看,来者有分!!! 告诉我几个地方,给你几十分,简单吧 :-) 有没有关于VPN的书籍 Interbase源码分析 西瓜是Plmm哎~! 一个字符串替换的小问题。。。 还有一个问题需要问大家。。。特别急。。。 我变成了大家的一员 哪儿有在jbuilder中让三键鼠标可以使用滚动功能的驱程? 我想把ODBC的所有数据源列出来显示,不知道用哪个函数,谁能告诉,多谢了!来就有分 两台机器怎样用一个asdl宽带猫上网 我的vc编译器在我的一个程序就是不出自动变量填补功能,在其他程序上可以,不知为什么 我想把ODBC的所有数据源列出来显示,不知道用哪个函数,谁能告诉,多谢了!来就有分 怎么复制程序自己? 小小问题 我喜欢在等人的时候抽根烟!(在车站接哈尔滨来的哥们) 我想把ODBC的所有数据源列出来显示,不知道用哪个函数,谁能告诉,多谢了!来就有分 如何在SQL服务器端编程截获SQL客户端从工作站机器上的登陆 大家的公司都用ASP做什么?????我一直想问这个问题。 我只有 .ora文件,怎样恢复数据库? 急 关于游戏编程! J2EE的配置问题!! 请帮忙 !!!多谢了!一定给分!!!! 什么类型的共享软件最挣钱? 请教各位大虾一个DLL问题 如何恢复oracle数据库,先安装好oracle,之后再安装了develop2000,修改了oracle_home后oracle就启动不来了。 SDI程序中,如何在MainFrame里,得到文档的指针? Delphi入门提问 请教各位大虾一个DLL问题 是输入IE网址不对还是Apache对该文件common.jsp设置了访问权限? ${java_home}/.. 在国外发布的共享软件如何收钱? 实在不知道现在企业都是怎么招人的! 世界上会有简单而没有伤害的爱情吗? 急!!!如何将一个结构对象转成LPVOID 有XP的控件吗? 天!问卷调查竟是这个样子的! 一个很EASY的问题 注册表的问题,如何导入注册表文件? 提几个小问题,高兴,顺便散分!910优先! 程序员最大的痛苦莫过于有一个混蛋领导,同意者跟贴! 如何使一个软件系统有随时可以增加新功能呢? 哪位大虾有lotus 123 的api或开发相关的文档或网站,请赐教,谢谢!! 你见过这么奇怪的问题吗!!急!! 写出下列物质的化学式: 1.氘核 2.瓦斯 3.氯仿写出下列物质的化学式: 1.氘核 2.瓦斯 3.氯仿 4.四氯甲烷 用什么东西清洗光学玻璃最好? 磁现象的本质 蒸馏水对植物的作用蒸馏水对植物有什么好处,坏处? Mg3N2是什么 磁的本质是什么?磁的本质是什么,是能量的表现?还是什么? 分别放入12种必须元素的自来水和蒸馏水培养植物为什么长势不同? Mg3N2 是什么颜色的 “磁现象的电本质“是什么意思?(要超详细) 蒸馏水是干净的吗?蒸馏水能不能检测水质的? 三氯甲烷是什么 用途 要注意什么 求这个生物实验原理把紫色的牵牛花放入盐水里,牵牛花变蓝了 另去一朵,放在醋里,它变红了 看过你做减压蒸馏的帖子.请问,你用的是循环水真空泵,这样还用接安全系统么? 三氯甲烷的使用我想使用三氯甲烷粘贴亚克力板制作鱼缸,三氯甲烷用医用针管吸取可以吗?.听说这东西有腐蚀性,针管会不会化掉?或者堵塞掉哦?. 原理是什么? 关于用真空泵减压蒸馏,为什么说可以回收溶液?我看了装置图发现提气囗刚好在出液囗处,难道不会把蒸汽给抽走导致溶液回收少了吗? 三氯甲烷哪儿里的好呢 养鱼的水中酵母菌放多了, 对有机混合物进行减压蒸馏时如何真选择真空泵 减压蒸馏操作要点在减压蒸馏前,我调到我需要的压力后,开始加热蒸馏,在这个过程中,水银压力计有变动,请问,我需要及时调节我的真空泵来控制压力吗?我现在需要得到128-138度/400.0帕的馏分,( 我养的热带鱼怎么老会死啊,请问怎样养鱼才能不死?请养鱼专家帮我指点指点! 减压蒸馏 真空泵的压力为什么不是液体表面的压力? 使用水泵减压蒸馏时,因采取哪些预防措施? 酒精喷灯与酒精灯的区别? SOCl2和碳共同构成锂电池的放电的电极反应方程式那可不可以告诉我充电时的方程式还有总的反应式啊, 使用水泵减压蒸馏时应采用什么预热措施 磁现象的本质是什么书上说是分子环流可那种物质不是分子原子组成的呢为什么只有少数物质可以导磁呢 锂电池的电极反应式高中能见到的一些锂电池的反应式 三氯甲烷有什么用途? 高中所有生物实验 心脏起搏器寿命快到能光换电池吗?另外国内哪里的价格便宜,大概几万元?83岁老人还可以装吗? 三氯甲烷起什么作用 谁有高中所有的生物实验最好有具体的步骤我这正好 100分你整理完我一定给你不过可别等到高考后 Li-Al、FeS电池电极材料是什么?电极反应式是什么?LI比AL活泼,怎么能AL作负极 各科学家研究各问题时所用的试验方法(高中生物)麻烦全部列举一下, 需要用活细胞做实验的有哪些实验 心脏起搏器的电池几年更换 求:有关生物科学家在实验方面的名言? 减压蒸馏得到油状物如何重结晶油状物不溶于石油醚易溶于甲醇 氯仿与什么化学物质反映为了测试溶液中是否含有氯仿,在甲醇+水+氯仿的溶液中,用什么溶液能测得该溶液中含有氯仿反映现象如何呢? 高中生物书中的科学家有什么阿?包括涉及的实验...包括实发明的东西和实验 甲醇里含有3%的水份,减压蒸馏可以脱水吗?有什么其它办法吗? 四氟乙烯的化学式 在高中生物中,哪些科学家的什么实验是用的假说演绎法? 磁勺子的勺把实质上是磁体的哪极?(南还是北?) 怎样按装心脏起搏器 根据四氟乙烯的化学式你能得到哪些信息 河水可以养鱼,说明河水中含有(),它-----(是或不是)溶质,碘酒和河水都属于()物 怎样用化学区分苯胺,N-甲基苯胺,N,N-二甲基苯胺? 四氟乙烯的化学式可以得到哪些信息? 河水中能养鱼说明水中有以化合物形式存在的什么元素? 氯仿化学式 脂肪鉴定为什么要在盖盖玻片前滴加蒸馏水 溶解在海水中物质所有原子分子离子. 选择题:氯仿的化学式和化学名是()? 三氯甲烷怎样处理后才能替代四氯甲烷 我需要八年级的下册的物理的知识要点 测定氯仿被氧化的溶液是什么?是 四氟乙烯(C2F4)中碳元素的浓度为? 磁的本质到底是什么,为何有磁场
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘