разбор пути
От: m_kostik  
Дата: 17.03.10 17:09
Оценка:
Здравствуйте, уважаемые форумчане!
Столкнулся с такой проблемой: при помощи стандартного диалога открытия файла GetOpenFileName() получаю полный путь, что-то вроде "\\Athlon\Disk D\ppr\мой файл.xyz" (в случае, если файл расположен на другом компе ЛВС) или "D:\ppr\мой файл.xyz" (если файл расположен на том же компе, что и запускаемая программа). Мне нужно из полученной строки получить две другие — имя компьютера (если файл открывается по сети) и путь к файлу на этом компьютере. Главная трудность здесь — файл может быть как на данном компе, так и на сетевом. В результате имя компа то будет, то нет. Корневой диск тоже то будет с двоеточием, то нет. Можно, конечно, посидеть и наколбасить свою функцию разбора пути, но может просто есть некоторая стандартная API-шная функция? Подскажите, пожалуйста, как поступить
Re: разбор пути
От: VladFein США  
Дата: 17.03.10 19:36
Оценка:
Здравствуйте, m_kostik, Вы писали:

_>...может просто есть некоторая стандартная API-шная функция?

Посмотрите Shell Path Handling Functions
Re: разбор пути
От: SuhanovSergey  
Дата: 18.03.10 07:42
Оценка: +2
Здравствуйте, m_kostik, Вы писали:

_>Здравствуйте, уважаемые форумчане!

_>Столкнулся с такой проблемой: при помощи стандартного диалога открытия файла GetOpenFileName() получаю полный путь, что-то вроде "\\Athlon\Disk D\ppr\мой файл.xyz" (в случае, если файл расположен на другом компе ЛВС) или "D:\ppr\мой файл.xyz" (если файл расположен на том же компе, что и запускаемая программа). Мне нужно из полученной строки получить две другие — имя компьютера (если файл открывается по сети) и путь к файлу на этом компьютере.
Предположим вы имеете путь к файлу на сервере с ЛВС \\server\MyShare\1.txt. MyShare — это имя сетевого ресурса, фактически отображаемого в d:\data\share. Извне вы никак не получите d:\data\share\1.txt так как информация об отображении сетевых ресурсов в общем случае недоступно извне сервера. А вообще вы столкнулись с проблемой канонизированного представления пути к файлу. Суть проблемы в том, что нет единого универсального способа представить путь так, чтобы потом можно было сравнить два представления и понять, что это один и тот же файл. Для размашления — это всё ссылки на один и тот же файл:
"\\Athlon\Disk D\ppr\some subfolder\..\мой файл.xyz"
"\\Athlon\Disk D\ppr\somesu~1\..\мой файл.xyz"
"\\192.168.112.33\Disk D\ppr\мой файл.xyz"
"\\Athlon\d$\ppr\мой файл.xyz"
"\\Athlon\Shared resource ppr\мой файл.xyz"
Re[2]: разбор пути
От: IID Россия  
Дата: 18.03.10 08:27
Оценка: +1
Здравствуйте, SuhanovSergey, Вы писали:

SS>>Суть проблемы в том, что нет единого универсального способа представить путь так, чтобы потом можно было сравнить два представления и понять, что это один и тот же файл.


А если ещё вспомнить про junction points и hardlinks то вообще труба...
kalsarikännit
Re[3]: разбор пути
От: Аноним  
Дата: 18.03.10 08:44
Оценка: +1 :))
Здравствуйте, IID, Вы писали:

IID>Здравствуйте, SuhanovSergey, Вы писали:


SS>>>Суть проблемы в том, что нет единого универсального способа представить путь так, чтобы потом можно было сравнить два представления и понять, что это один и тот же файл.


IID>А если ещё вспомнить про junction points и hardlinks то вообще труба...


Ответы в лучших традициях =) Топиккастеру не нужно "сравнить два представления и понять, что это один и тот же файл".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.