function ShortToLongFileName(const ShortName: string): string; var Temp: TWin32FindData; SearchHandle: THandle; begin SearchHandle := FindFirstFile(PChar(ShortName), Temp); if SearchHandle <> INVALID_HANDLE_VALUE then begin Result := string(Temp.cFileName); if Result = '' then Result := string(Temp.cAlternateFileName); end else Result := ''; Windows.FindClose(SearchHandle); end; function ShortToLongPath(const ShortName: string): string; var LastSlash: PChar; TempPathPtr: PChar; begin Result := ''; TempPathPtr := PChar(ShortName); LastSlash := StrRScan(TempPathPtr, '\'); while LastSlash <> nil do begin Result := '\' + ShortToLongFileName(TempPathPtr) + Result; if LastSlash <> nil then begin LastSlash^ := char(0); LastSlash := StrRScan(TempPathPtr, '\'); end; end; Result := TempPathPtr + Result; end;