Выдаёт пустоту, если нет расширения. А всё потому, что в строке 69 нет проверки на точку. Надо бы так:
if Pos('.', FPart) ‹› 0 then rparse(FPart, '.');
2. То же самое ext name и ext name WOPoint
Если нет расширения - выдаёт просто полное имя со входа. А если где-то в имени папки есть точка - обрезает просто по ней.
Поэтому надо бы сначала отсекать имя файла после последнего слеша, а потом уже делить его по точке (если она есть).