点击或拖拽改变大小

Functions.FRead4 方法

X#
从文件中读取字符到已分配的缓冲区。

命名空间:  XSharp.Core
程序集:  XSharp.Core (在 XSharp.Core.dll 中) 版本:2.22 GA
语法
 FUNCTION FRead4(
	ptrHandle AS IntPtr,
	ptrBufferVar AS BYTE[],
	dwBytes AS DWORD,
	lAnsi AS LOGIC
) AS DWORD
查看代码

参数

ptrHandle
类型:IntPtr
要读取的文件句柄。
ptrBufferVar
类型:Byte
指向用于存储从指定文件读取的数据的已分配缓冲区的指针。
此变量的长度必须大于或等于 dwBytes。 An array of bytes to store the data read from the specified file. The length of this variable must be greater than or equal to the number of bytes in the next parameter.
dwBytes
类型:UInt32
要读入缓冲区的字节数。
lAnsi
类型:Boolean
如果为 FALSE,则进行 OEM 到 ANSI 的转换。

返回值

类型:UInt32
成功读取的字节数。
返回值小于 dwBytes 或为 0 表示到达文件末尾或发生其他读取错误。可以使用 FError() 来确定具体错误。
备注
FRead4() 与 FRead3() 相同,只是它提供了执行 OEM 到 ANSI 转换的选项。
备注
提示 提示:
在 Ansi 环境中,如 Visual Objects,OEM 和 Ansi 之间的转换是相关的。
在 Unicode 环境中,这种转换不仅仅是 OEM 和 Ansi 之间的转换,还包括 Unicode 和 Ansi 或 Unicode 和 OEM 之间的转换。
对于这些转换,运行时使用 Windows 代码页DOS 代码页的当前值。
示例
此示例在成功打开文件后使用 FRead4() 将 128 个字节读入缓冲区:
X#
 1DEFINE F_BLOCK := 128
 2Function Start()
 3    LOCAL cBuffer AS PTR
 4    cBuffer := MemAlloc(F_BLOCK)
 5    IF cBuffer = NULL PTR
 6        RETURN FALSE
 7    ENDIF
 8    ptrHandle := FOpen2("temp.txt", FO_READ)
 9    IF ptrHandle = F_ERROR
10        ? DOSErrString(FError())
11        RETURN FALSE
12    ELSE
13        IF FRead4(ptrHandle, cBuffer, F_BLOCK, FALSE) != F_BLOCK
14        ? DOSErrString(FError())
15            RETURN FALSE
16        ENDIF
17        FClose(ptrHandle)
18    ENDIF
19    MemFree(cBuffer)
20    RETURN TRUE
参见