分配一块内存并将其返回到缓冲对象中.
Buffer := BufferAlloc(ByteCount , FillByte)
类型: 整数
要分配的字节数. 对应于 Buffer.Size.
类型: 整数
指定一个介于 0 到 255 之间的数字, 以将缓冲中的每个字节设置为该数字.
在不需要先读取缓冲而直接写入的情况下, 通常应将其省略, 因为它的时间开销与字节数成正比. 如果省略, 则不初始化缓冲的内存; 每个字节的值是任意的.
返回值是一个新的缓冲对象.
如果无法分配内存, 则抛出 MemoryError, 如 ByteCount 意外地大或系统虚拟内存不足.
缓冲对象, DllCall, NumPut, NumGet, StrPut, StrGet, File.RawRead, File.RawWrite
通过 DllCall 使用 Buffer 从外部函数接收字符串.
max_chars := 11 ; 为 wsprintf 的 Unicode 版本分配一个缓冲. bufW := BufferAlloc(max_chars*2) ; 使用 wsprintfW() 将一个 UTF-16 字符串打印到缓冲中. DllCall("wsprintfW", "Ptr", bufW, "Str", "0x%08x", "UInt", 4919, "CDecl") ; 从 bufW 中检索字符串并显示出来. MsgBox StrGet(bufW, "UTF-16") ; 或者直接 StrGet(bufW). ; 分配一个缓冲区供 ANSI 版本的 wsprintf 使用. bufA := BufferAlloc(max_chars) ; 使用 wsprintfA() 将一个 ANSI 字符串打印到缓冲中. DllCall("wsprintfA", "Ptr", bufA, "AStr", "0x%08x", "UInt", 4919, "CDecl") ; 从 bufA 中获取字符串(转换为本地格式), 并将其显示出来. MsgBox StrGet(bufA, "CP0")