有很多 API 例程需要以指针形式作为参数传递某些变量,这些例程被翻译为 var 参数,但根据 Windows 帮助文件可以将它们指定为 nil 指针。
例如,ChangeDisplaySettings 函数声明如下:
function ChangeDisplaySettings(var lpDevMode: TDeviceMode; dwFlags: DWORD): Longint; stdcall;
但 Windows 帮助文件明确说明:“将 lpDevMode 参数传递为 NULL 是在动态模式更改后返回默认模式的最简单方法。” 正确的翻译应该是:
function ChangeDisplaySettings(lpDevMode: PDeviceMode; dwFlags: DWORD): Longint; stdcall;
我发布这个问题和答案是为了帮助新手解决这些问题,而无需重新声明函数。我仍然记得在一开始时这是一个问题。