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

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 开始运行。
在Delphi 中使用计算出的字段 在Delphi3 程 序 中自 动 检 测、 建 立 数 据 库 别 名 和 表 格 在Delphi3程序中自动检测、建立数据库别名和表格 在Delphi4 BDE中配置Access数据库 在Delphi5 中修改了Delphi自带的VCL Source文件后怎样重建Delphi的库文 在DELPHI程序中动态设置ODBC数据源 在DELPHI程序中使用ADO对象存取ODBC数据库 在DELPHI程序中自动设置ODBC数据源 在Delphi的DBGrid中插入其他可视组件 在Delphi的Socket编程中如何从服务器向指定的客户机发送信息? 在Delphi动态生成定义数据库 在Delphi中处理数据库日期型字段的显示与输入 在Delphi中简单实现多重查询 在Delphi中建立和使用别名 在DELPHI中使用ADO对象存取ODBC数据库 在Delphi中使用DBF数据 在Delphi中随意控制DBGrid 每一行的颜色 在Delphi中自动检测、建立数据库别名和表格 在存储过程中使用use database-Delphi资料 在一个Dbgrid中显示多数据库-Delphi资料 在运行期创建表-Delphi资料 怎样把可以使用的表名输出到一个选择框?-Delphi资料 怎样发布基于Microsoft SQL Server的程序-Delphi资料 怎样解决打开一个DBF表时的Index not found..错误-Delphi资料 怎样向SQL Server插入带有Image字段的记录-Delphi资料 怎样在Paradox表中加密码?-Delphi资料 自动Login数据库-Delphi资料 自动检测、建立数据库别名和表格-Delphi资料 自动注册Paradox-Delphi资料 Delphi 4增訂的Object Pascal Delphi 5 Enterprise版10大特点 访问该页者有分!!!!!!!!!!!!!! 数据库问题!急用! 为什么触发器只触发最后一条记录?(付触发器) 我用web程序生成了word的document的对象,怎么通过网页输出word文件?不是保存到 俯卧撑次数首次超40,放分! 一个使用motoSDK的问题请较! 一个奇怪的问题?? 我用web程序生成了word的document的对象,怎么通过网页输出word文件?不是保存到硬盘,而是response到用户? 一个非常初级的问题。 中国积极培养电脑“网络战士” ---泰晤士报星期刊 sco unix 高手请进 我再放!! 求救!!!!!!一个SQL的问题 为什么用中断1A获取网卡的配置空间时,在偏移量10h处只能获取mac地址的前8位,后4位无法获取??? 我又放!! 存储过程的高级应用问题,急用! 在combobox中禁止某些字符输入,为什么不成功? 我没完没了的放!! 怎么把数字39显示成0039,同理9显示成0009,多谢指教(在线等待) 大虾:如何用ADO向Access2000的BLOB字段中放图像文件?请赐教!... ASP.NET 调试问题 pb 有没有中文版呀`~~或者是汉化包呀`~ 如何做程序组安装盘???---在线等候!!! 存储过程返回值判断出错,大家看看是存储过程出错还是asp.net代码出错,给300分!! weblogic怎么老跟sqlserver连不上? 请各位前辈帮帮我。怎样能收到外部发进来的邮件?? 有在web上显示数据库中图片成功的吗?是sybase数据库。我们交流一下。 是谁干的站出来!!! 电子书籍请教!!! 哪里有InterBase6.0 Server下载?? recordset、connection等的释放内存问题:是不是每用一次都要set =nothing? Analysis server 2000的Bug ? 寻找SQL Server系统存贮过程和函数 各位DX,什么地方有windows 2000 platform sdk 下载啊?!!!!! 看了C++ language programmer (特别版) PopupMenu为什么单击右键不能出现弹出菜单呢? 各大虾好,我是一名小鸟希望快快长大,首先我要搭一个家,请问jsp调试环境如何建立?请详细一些好吗?谢谢 如何在MDI中进行静态拆分? 这是什么问题????非常急!!! 想订杂志但不知道哪些杂志好?诸位能给点意见与我吗???(图像类和网络类) 想订杂志但不知道哪些杂志好?诸位能给点意见与我吗???(图像类和网络类) 请问如何入理ASP文本无法换行的问题? 想订杂志但不知道哪些杂志好?诸位能给点意见与我吗???(图像类和网络类) linux硬盘安装 小调查:天津的程序员工资 哪位高人能详细讲述一下三层结构的概念? 求解题思路(扑克牌大小问题,有帮助的均给分) 窗体上有2个PictureBox,如何用一跟线把它们连起来? 问一个ftp的数据传输格式问题!:) redhat7.2下如何安装 j2sdk-1_4_0_01-linux-i586-rpm.bin 谁有变量命名规范,如果有完整的编码规范更好 大自然的声音给我们的感受……快……谢谢啦! 凝结水溶解氧增大有哪些原因? 世界上是否存在另一个空间 如何用万用表测量接地电阻. 水中有机物增加,水溶解氧的能力会( ) A.增大 B.减小 C.不变 想知道另一个空间是否存在?如题不知道是否有所谓的二次元,平行空间等的存在 用绝缘线拴一小球质量m,小球在竖直向下的场强为E的匀强电场中竖直平面内做圆周运动,则小球带 金属导电体能带电吗? 紧压圆形电缆怎么测直径 竖直平面内的圆周运动一个小球在竖直环内至少做N次圆周运动,当它第(N-2)次经过环的最低点时,速度是7m/s;第(N-1)此经过环的最低点时,速度为5m/s,则小球在第N次经过环的最低点时的速 怎样找圆的直径不是什么“卡尺”?我看没有“随便在圆作一条弦,然后作该弦的中垂线就是该圆的直径了! 如图AE是圆O的直径,AF垂直BC于D,试说明:BE=CF 斜齿园柱齿轮Z1=21 Z2=140模数8螺旋角12度求各几何尺寸 一个圆不知道圆心的位置,请你想办法测出圆的直径,并把你的方法写出来. 蚂蚁的触角干嘛用的?蚂蚁生活在哪里 外啮合斜齿圆柱齿轮传动 Z1=25 Z2=100 M=4 MM β=15°,α=20° 求斜齿轮主要几何尺寸 地球有多少空间? 蚂蚁的触角有什么用?详细一点.好的话,我会悬赏30 在使用天然气做饭有时候会闻到一股异味,为什么? 地球有多少个空间?有多少个位面?又有多少个我? 丹麦曾经捉过眼睛颜色的遗传调查,下列为原始数据:(数据见附图)①眼睛颜色这一对相对性状中,控制褐眼性状的基因为:_____(填“隐性”或“显性”)控制蓝眼性状的基因为:_____(填 三次科技革命的区别? 我家用的是天然气,为什么还闻到煤气味? 太阳围者地球每小时行多少千米? 三次科技革命的不同只要不同,省略点,谢谢啊—————— 求开关插座绝缘电阻测试接线方式绝缘电阻仪是艾诺AN9632XW,我安照标准的方法连接怎么不显示电阻呢? 1T等于多少GB? 三次科技革命分别是什么 开关插座哪种接线方式最好? 跪求做弹簧的做好的材料,要求尽量轻,弹性最好,求答,给100我要做一重东西要用到弹簧,像床垫子一样压下能有最好的反弹效果,尽量轻的,当然已弹性好为主,不轻也没关系,希望能给推荐材料,购 三次科技革命比较, 怎样才能量出圆形游泳池的直径 什么样的弹簧的弹性能力最好? 如图所示,小球A质量为m.固定在轻细直杆L的一端,并随杆一起绕杆的另一端O点在竖直平面内做圆周运动.如果小球经过最高位置时,杆对球的作用力为拉力,拉力大小等于球的重力.求:(1) 在方向竖直向下的匀强电场中,以绝缘轻细绳一端固定于O点,另一端系衣带正电的小球在竖直平面内作圆周运动小球带电量为q,质量为m,绝缘细线长为L,电场强度为E,若小球恰好能通过最高点A,则 创建文明城市的手抄报 细绳一端固定,另一端系一质量为M的小球,小球绕绳子的固定点O在竖直平面内做圆周运动.则细绳在最低点和最高点的张力之差为多少?忽略空气阻力 如何将一个三分之一圆的直径量出来今天厂长叫我把一个零件的尺寸测量下,但有一段是圆的三分之一,我不知道怎么量,要用啥测量工具?是近似三分之一,而且我看不出来这圆与它的切线的结 谁知道哪里的弹簧做的最好 细绳的一段固定,另一端系一质量为M的小球,小球绕绳的固定点在竖直平面做圆周运动.小球在最低点和最...细绳的一段固定,另一端系一质量为M的小球,小球绕绳的固定点在竖直平面做圆周运动 帮我把这个圆的直径求出来,求帮忙正方形是边长是190mm,我没有分哈,求帮忙在线等回答,给我一个整数,根什么的我还没学到 怎样做创建文明城市手抄报 机械图纸上技术要求里常写的“未注公差尺寸按GB/T1840-m”在那可以下载?机械图纸上技术要求里常有这两条:1、未注公差尺寸按GB/T1840-m,2、未注形位公差按GB/T1184-k.请问一下具体公差及形位 直径为17厘米,高17厘米的圆主形的体积是多少升! 创建文明城市 我是小主人手抄报. M、N表示自然数,设SM、SN风别表示M、N个位数字之和,M#N表示M除以N所得的余数,已知M、N之和是7043.求(SM+SN)#9的值 做饭时煤气味大如何解决 不锈钢弹簧用什么材料最好,要求材料能加硬到HRC52-55材料需耐磨.工件高速1000转/分钟与铜摩擦,能用3个月. 英语翻译 在所有的三位自然数中,用较大的自然数除以较小的自然数,得到的余数最大可能是为什么 做以创建文明城市为主题的手抄报题目应该叫什么 如图所示,用绝缘细线拴一个带负电的小球,让它在竖直向下的匀强电场中绕O点做竖直平面内的圆周运动,a、b两点分别是圆周的最高点和最低点,则( )\x05A.小球经过点a时,线中的张力最小\x05 英语翻译给曾经是孩子的我和长大的你.to.{写在书的扉页上的那种) 以创建文明城市,提高中学生素质为主题的手抄报报内容,最好有图 17.如图所示,在匀强电场中,一个带负电的物体沿水平方向的绝缘天花板平面做匀速直线运动.从某时刻(设为t = 0)起,电场强度从E0均匀增大.若物体与天花板平面间的动摩擦因数为 ,电场线与 如图,竖直放置的光滑绝缘环上套有一带正电的小球,匀强电场场强方向水平向右,小球绕O点做圆周运动,那么A.在A点小球有最大的电势能B.在B点小球有最大的重力势能C.在C点小球有最大的机械 图2中曲线甲、乙分别代表物质进出细胞的两种方式.请据图回答:曲线乙中Q点对应时刻细胞不再吸收物质分子,此时,限制物质进入细胞的因素是____________. 能量供应和载体.现在的问题是:有 1G等于1024GB么 如图3所示,一小球在轻质细绳作用下在竖直平面内做圆周运动.若绳长为L,则小球正好能通过最高点时 世上是否存在另一个空间呢?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘