从内存地址或缓冲中复制字符串, 可选地从给定的代码页进行转换.
String := StrGet(Source , Length, Encoding) String := StrGet(Source , Encoding)
包含字符串的类缓冲对象, 或字符串的内存地址.
可以使用任何实现 Ptr 和 Size 属性的对象, 但此函数针对原生的缓冲对象进行了优化. 传递具有这些属性的对象可确保函数不会从无效位置读取内存; 这样做可能会导致崩溃或其他不可预测的行为.
如果提供了类缓冲对象, 或者如果指定了 Length, 则字符串不需要以空终止符结尾.
类型: 整数
如果未设置或省略(或使用 2 参数模式时), 则默认为字符串的当前长度, 前提是字符串以空终止符结尾. 否则, 请指定需读取的最大字符数.
默认情况下, 只复制到第一个二进制零. 如果 Length 为负数, 则它的绝对值指示要转换的确切字符数, 包括字符串可能包含的任何二进制零 - 换句话说, 结果始终是具有该长度的字符串.
注意: 如果字符串不是以空终止符结尾的, 则保留 Length 未指定可能会造成访问冲突, 从而导致程序终止或其他一些不希望的结果. 指定不正确的长度可能会产生意外的行为.
类型: 字符串
如果未设置或省略, 那么将简单地复制字符串, 而不进行任何转换. 否则, 请指定源编码; 例如, "UTF-8"
, "UTF-16"
或 "CP936"
. 对于数字标识符, 只有在 3 参数模式中, 才可以省略前缀 "CP". 指定空字符串或 "CP0"
则使用系统默认 ANSI 代码页.
类型: 字符串
函数返回复制或转换后的字符串. 如果正确地指定了源编码, 则返回值总是使用原生编码. 它总是以空终止符终止, 但是空终止符不包括在返回值的 length 中, 除非 Length 为负数, 如前所述.
如果检测到无效参数, 则抛出 ValueError.
如果转换无法执行, 则抛出 OSError.
注意, 返回值总是使用当前可执行文件的原生编码, 而 Encoding 指定如何解释从给定 Source 读取的字符串. 如果没有指定 Encoding, 只复制字符串而不进行任何转换.
换句话说, StrGet 用于从内存地址或缓冲检索文本, 或者将其转换为脚本可以接受的格式.
如果需要在代码页之间进行转换, 返回值的长度可能与源字符串的长度不同.
字符编码, StrPut, 二进制兼容性, FileEncoding, DllCall, 缓冲对象, VarSetCapacity