从内存地址复制字符串, 可选地将其从给定的代码页转换为可识别的字符串.
String := StrGet(Source , Length, Encoding) String := StrGet(Source , Encoding)
字符串的内存地址.
如果指定了 Length, 则字符串不需要以空终止符结尾.
如果省略(或使用双参数模式时), 则默认为字符串的当前长度, 前提是字符串以空终止符结尾. 否则, 请指定需读取的长度, 以字符为单位.
注意: 如果字符串不是以空终止符结尾的, 则省略 Length 可能会造成访问冲突, 从而导致程序终止或其他一些不希望的结果. 指定不正确的长度可能会产生意外的行为.
注意: 不支持嵌入的空终止符, 这通常会导致字符串的截断.
如果省略, 那么将简单地复制字符串, 而不进行任何转换. 否则, 请指定源编码; 例如, "UTF-8"
, "UTF-16"
或 "CP936"
. 对于数字标识符, 只有在 3 参数模式中, 才可以省略前缀 "CP". 指定空字符串或 "CP0"
则使用系统默认 ANSI 代码页.
函数返回复制或转换后的字符串. 如果正确地指定了源编码, 则返回值总是使用原生编码. 返回值总是以空终止符终止, 但是空终止符不包括在返回值的 length 中.
如果检测到无效参数或转换无法执行, 则返回空字符串.
注意, 返回值总是使用当前可执行文件的原生编码, 而 Encoding 指定了如何解释从给定 Source 读取到的字符串. 如果没有指定 Encoding, 则只复制字符串而不进行任何转换.
换句话说, StrGet 用于从内存地址检索文本, 或者将其转换为脚本可以接受的格式.
如果需要在代码页之间进行转换, 返回值的长度可能与源字符串的长度不同.
字符编码, StrPut(), 脚本兼容性, FileEncoding, DllCall(), VarSetCapacity()