有很多API例程将指向某个变量的指针作为转换为var参数的参数,但可以根据Windows帮助文件指定为nil指针.
例如,ChangeDisplaySettings函数声明为:
function ChangeDisplaySettings(var lpDevMode: TDeviceMode; dwFlags: DWORD): Longint; stdcall;
Run Code Online (Sandbox Code Playgroud)
但Windows帮助文件明确指出"在动态模式更改后,为lpDevMode参数传递NULL是返回默认模式的最简单方法." 正确的翻译应该是:
function ChangeDisplaySettings(lpDevMode: PDeviceMode; dwFlags: DWORD): Longint; stdcall;
Run Code Online (Sandbox Code Playgroud)
我发布这个问题和答案,以帮助新手解决这些问题,而无需重新声明功能.我还记得在开始时这对我来说是一个问题.
RFC4627 中描述了一种在 BOM 不存在时识别 Unicode 编码的方法。这依赖于 JSON 文本中的前 2 个字符始终是 ASCII 字符。但在RFC7159中,规范将JSON文本定义为“ws value ws”;意味着单个字符串值也是有效的。因此第一个字符将是起始引号,但随后可以是字符串中允许的任何 Unicode 字符。考虑到 RFC7159 也不鼓励使用 BOM;不再描述从前 4 个八位位组(字节)检测编码的过程,应该如何检测呢?UTF-32 应该仍然可以正常工作,如 RFC4627 中所述,因为第一个字符是四个字节并且应该仍然是 ASCII,但是 UTF-16 呢?第二个(2 字节)字符可能不包含零字节以帮助识别正确的编码。