点击或拖拽改变大小

Functions.FReadText3 方法

X#
从文件中读取字符到分配的缓冲区,并根据当前的 SetAnsi() 设置进行可能的 OEM 到 ANSI 转换。

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

参数

ptrHandle
类型:IntPtr
要读取的文件句柄。
ptrBufferVar
类型:Byte
指向用于存储从指定文件读取的数据的已分配缓冲区的指针。
此变量的长度必须大于或等于 dwBytes
dwBytes
类型:UInt32
要读入缓冲区的字节数。

返回值

类型:UInt32
成功读取的字节数。
返回值小于 dwBytes 或为 0 表示已到达文件末尾或发生其他读取错误。可以使用 FError() 确定具体错误。
备注
FReadText3() 与 FRead3() 相同,只是在 SetAnsi() 为 FALSE 时会进行 OEM 到 ANSI 的转换。
备注
提示 提示:
X# 运行时中的低级文件 IO 函数在后台使用 .Net 文件流。
这意味着 FOpen() 和 FCreate() 返回的文件句柄不是'正常'的文件句柄,而是用于在运行时的流集合中找到底层流对象的唯一标识符。 这也意味着你不能使用 FRead() 和 FWrite() 这样的函数,这些函数不是在 X# 运行时中创建的文件句柄。
如果你想访问底层的 FileStream,你应该调用函数 FGetStream(IntPtr)
示例
此示例在成功打开文件后使用 FReadText3() 将 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 := FOpen("temp.txt")
 9    IF ptrHandle = F_ERROR
10        ? DOSErrString(FError())
11        RETURN FALSE
12    ELSE
13        IF FReadText3(ptrHandle, cBuffer, F_BLOCK) <paramref name="" /> F_BLOCK
14            ? DOSErrString(FError())
15            RETURN FALSE
16        ENDIF
17        FClose(ptrHandle)
18    ENDIF
19    MemFree(cBuffer)
20    RETURN TRUE
参见