Shkutu, И правильно ругается. Т.к. в библиотеке нет имени функции под названием "PathFileExists".
дело в том что все WINAPI функции и процедуры где во входных аргументах есть "строка" функция задаётся двумя типами:
имя_функцииW - сокр. Wide - стока символов в который каждый символ лежит в Word-е
имя_функцииA - сокр. Ansi - стока символов в который каждый символ лежит в Byte-е
PWideChar, PAnsiChar - типизированный указатель на первый байт строки.
сама по себе типизация - это приблуда языков для упрощения адресной арифметики,
скажем адрес первого байта 1000000 и он лежит в переменной типа типизированного указателя P: PWideChar
получаешь значение по адресу в P так: P^
чтоб получить след. символ нужно прибавить к P единицу ( P + 1 ). При этом числовое значение указателя становится 1000002 тк SizeOf(WideChar) = 2 байта,
Те компилятор знает благодаря типизации на сколько байт нужно сместиться
можно и так NativeUInt(P) + SizeOf(WideChar)
в PAnsiChar смещение (или шаг) на 1 байт соответственно
при это String это самый обычный указатель
попробуй если интересно в нормальном языке сделать так:
читать дальше »
Код:

program Project3;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
s: AnsiString = 'abc';
begin
WriteLn( NativeUInt( s ), #32#32, NativeUInt( PAnsiChar(s) ), #32#32, NativeUInt( @s[1] ) );
WriteLn( PAnsiChar( s )^, #32#32, s[1] );
ReadLn;
end.
и ты увидишь что и адреса и символы равны
если мне память не изменяет, то в Ansi версии инно все String по дефолту AnsiString , а в юникодной версии WideString
и так как мы выяснили что (Wide/Ansi)String = P(Wide/Ansi)Char = Pointer, то канает следующее:
читать дальше »
Код:

#ifdef UNICODE
function PathFileExists( pszPath: String ): BOOL;
external 'PathFileExistsW@Shlwapi.dll stdcall delayload';
#else
function PathFileExists( pszPath: String ): BOOL;
external 'PathFileExistsA@Shlwapi.dll stdcall delayload';
#endif
procedure InitializeWizard();
begin
if PathFileExists( 'C:\Program Files (x86)\OpenAL' ) then
MsgBox('Ok', mbInformation, MB_OK)
else
MsgBox('Error', mbInformation, MB_OK);
end;