易语言+汇编使用ReadFile()API实现高效的逐字读文件
.版本 2.DLL命令 ReadFile, 逻辑型, "kernel32", "ReadFile"
.参数 hFile, 整数型
.参数 lpBuffer, 整数型
.参数 nNumberOfBytesToRead, 整数型
.参数 lpNumberOfBytesRead, 整数型, 传址
.参数 lpOverlapped, 整数型
.DLL命令 CreateFileA, 整数型, "kernel32.dll", "CreateFileA", , 如执行成功,则返回文件句柄。
.参数 lpFileName, 文本型
.参数 dwDesiredAccess, 整数型
.参数 dwShareMode, 整数型
.参数 lpSecurityAttributes, 整数型
.参数 dwCreationDisposition, 整数型
.参数 dwFlagsAndAttributes, 整数型
.参数 hTemplateFile, 整数型
.版本 2
.支持库 spec
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
api_读文件 ()
返回 (0)' 可以根据您的需要返回任意数值
.子程序 api_读文件, , , 十六进制到整数
.局部变量 buffer, 字节集
.局部变量 hFileRead, 整数型
.局部变量 nIn, 整数型
.局部变量 pnIn, 整数型
.局部变量 bTrue, 逻辑型
.局部变量 pbuffer, 整数型
.局部变量 m, 整数型
.局部变量 n, 整数型
buffer = 取空白字节集 (2)
hFileRead = CreateFileA (“book.txt”, 十六进制到整数 (“0x80000000”), 1, 0, 3, 128, 0)
pnIn = 取 变量地址 (nIn)
pbuffer = 取 变量数据地址_字节集 (buffer)
n = 2
.如果真 (hFileRead ≤ 0)
调试输出 (“打开文件失败”, GetLastError ())
返回 ()
.如果真结束
.循环判断首 ()
bTrue = ReadFile (hFileRead, pbuffer, 2, pnIn, 0)
' 调试输出 (bTrue, 指针到整数_汇编 (pnIn), 到文本 (指针到字节集 (pbuffer, 2)))
.如果真 (指针到整数_汇编 (pnIn) > 0)
buffer = buffer + 指针到字节集 (pbuffer, 2)
调试输出 (到文本 (buffer))
.如果真结束
.循环判断尾 (bTrue = 真 且 指针到整数_汇编 (pnIn) > 0)
CloseHandle (hFileRead)
.子程序 指针到整数_汇编, 整数型, 公开, 指针到整数_汇编
.参数 指针, 整数型
置入代码 ({ 93, 139, 68, 36, 4, 194, 4, 0 })
' pop ebp
' mov eax, dword
' retn 0x0004
返回 (0)
.子程序 取变量数据地址_字节集, 整数型, 公开, 取变量数据地址
.参数 参数_字节集, 字节集
置入代码 ({ 139, 69, 8, 139, 0, 5, 8, 0, 0, 0, 201, 194, 4, 0 })
' mov eax,
' mov eax,
' add eax,08
' leave
' retn 04
返回 (0)
.子程序 十六进制到整数, 长整数型, , 十六进制到整数
.参数 十六进制文本, 文本型
置入代码 ({ 139, 93, 8, 139, 27, 51, 192, 190, 16, 0, 0, 0, 15, 182, 11, 128, 249, 64, 114, 5, 128, 233, 55, 235, 13, 128, 249, 32, 116, 12, 128, 249, 0, 116, 10, 128, 233, 48, 247, 230, 3, 193, 67, 235, 223, 139, 229, 93, 194, 4, 0, 195 })
返回 (0)
Good! 其实很多人都懂编程,但不是很精通。我也没有找到工作。我可那还没有你精。我是说VC。我学VB4年了。我QQ162252487。 谢谢 向你致敬~~~! 很是感慨!!!! 谢谢你的经验。非常感谢! 不错不错 ^感动,真的很有感情,我喜欢.祝福作者早日成为一个高手编程员 之前看过了不过还是来顶下“计算机”爱你没商量 是的真的很受益呀真的是学计算机的人心读的幸亏我看了哎~~~要不可惨了~~感谢楼主~~~~~