人亦已歌 发表于 2023-2-14 19:14:38

易语言+汇编使用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)



darkangel21 发表于 2023-2-16 02:52:46

Good!

alw_ddd 发表于 2023-2-17 22:17:19

其实很多人都懂编程,但不是很精通。我也没有找到工作。我可那还没有你精。我是说VC。我学VB4年了。我QQ162252487。

艾·奥里斯 发表于 2023-2-18 12:25:41

谢谢 向你致敬~~~!

jqx 发表于 2023-2-19 04:30:27

很是感慨!!!!

本人韩杉 发表于 2023-2-19 19:35:20

谢谢你的经验。非常感谢!

fwqer 发表于 2023-2-20 14:42:35

不错不错

yueyan758617 发表于 2023-2-21 04:50:50

^感动,真的很有感情,我喜欢.祝福作者早日成为一个高手编程员

kndanny 发表于 2023-2-21 23:58:53

之前看过了不过还是来顶下“计算机”爱你没商量

我是衣迷 发表于 2023-2-22 14:04:14

是的真的很受益呀真的是学计算机的人心读的幸亏我看了哎~~~要不可惨了~~感谢楼主~~~~~
页: [1] 2 3 4
查看完整版本: 易语言+汇编使用ReadFile()API实现高效的逐字读文件