There are quite a few API routines that take a pointer to some variable as a parameter that were translated to var parameters, yet can be specified as nil pointers according to the Windows help files.
As an example, the ChangeDisplaySettings function is declared as:
function ChangeDisplaySettings(var lpDevMode: TDeviceMode; dwFlags: DWORD): Longint; stdcall;
But the Windows help file clearly states that "Passing NULL for the lpDevMode parameter is the easiest way to return to the default mode after a dynamic mode change." The correct translation should have been:
function ChangeDisplaySettings(lpDevMode: PDeviceMode; dwFlags: DWORD): Longint; stdcall;
I'm posting this question and answer to help newbies get around these issues without having to re-declare the functions. I still remember that it was an issue for me in the beginning.