Проверил несколько раз с блокнотом, всё собирается и работает. Возможно из вилки ShellExecuteA и ShellExecuteW выбирается не то, что нужно и в функцию заходит абракадабра вместо названия файла из-за разницы в кодировке или типе. Как вариант, использовать принудительное указание типа
Код:
ShellExecute(Handle, 'open', PChar('C:\Program Files\Softland\doPDF 7\dopdf.exe'), nil, nil, SW_SHOWNORMAL);