¿Donde falla el código?
La dll debe estar en la carpeta del ejecutable o estar registrada en la ruta Windows\System32. El ejemplo que pones se basa en localizar el puntero a la función exportada por la dll de forma dinámica con
GetProcAddress. Lo primero que hay que ver es donde está fallando, si es en la importación dinámica o en la ejecución.
Cuando una función exportada estilo C espera un puntero, desde delphi puede declararse como paso por referencia sin problemas que es como está en el ejemplo que muestras.
Las cadenas pueden ser estilo clasico o unicode, no sebemos que estilo dtiene esa dll, al menos no lo sabemos en el foro. puedes forsar la declaración con PAnsiChar que funcionará si tu delphi usa Unicode por defecto y la dll usa Char clasico (AnsiChar)
Prueva a declararla así:
Código Delphi
[-]TConsultarVersionDll = function (descripcion: PAnsiChar; descripcion_largo_maximo: integer; var mayor: integer; var menor: integer): integer; stdcall;
Saludos.