The external directive

The external directive specifies that the function or procedure being declared is located outside of the program, and the function or procedure body is omitted from the declaraion. Currently the only external functions and procedures supported are functions and procedures located in Windows DLLs.


The following external function declaration is taken from the include file, and declares the Windows MessageBox function.

   function MessageBox(hWnd : _HWND; lpText, lpCaption : LPSTR; uType : UINT) : integer;
      external dll='user32.dll' name='MessageBoxA' stdcall;


The syntax for declaring external functions and procedures is given below (NOTE: for clarity some parts of the syntax are omitted, see Irie Pascal Grammar for the full syntax):

   function-declaration = function-heading ';' external-directive

   procedure-declaration = procedure-heading ';' external-directive

   dllname = string-literal

   external-directive = 'external' 'dll' '=' dllname [ 'name' '=' name ] [ 'stdcall' | 'cdecl' ]

   function-heading = 'function' identifier [ formal-parameter-list ] ':' result-type

   name = identifier

   procedure-heading = 'procedure' identifier [ formal-parameter-list ]

   result-type = type-identifier

dllname is a string literal that is the name of the Windows DLL to call.

name is the name of the function or procedure in the DLL. If name is not specified then the name of the function or procedure in the DLL is assumed to be the same as the name of the function or procedure in the declaration.

stdcall specifies that the stdcall calling convention should be used (This is the default).

cdecl specifies that the cdecl calling convention should be used.