Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.03;
Скачать: CL | DM;

Вниз

Преобразование вида "file:///C:...." в обычный windows путь   Найти похожие ветки 

 
pit   (2010-07-05 13:58) [0]

У кого есть готовая функция, которая преобразует пути вида "file:///C:" (который генерирует IE, движок XML и около того) в стандартный локальный путь (который, например, понимает WinApi функция OpenFile)? Нужно корректная, проверенная в работе функция.


 
Anatoly Podgoretsky ©   (2010-07-05 14:05) [1]

delete(s, 1, 8)


 
Rouse_ ©   (2010-07-05 14:09) [2]

ParseUrl()


 
pit   (2010-07-05 14:56) [3]


> delete(s, 1, 8)

это некорректный вариант. Я же просил проверенный в работе пример. На ходу я тоже могу такое сочинить


> ParseUrl()

что это такое? Я нашел в методе XML reader"а такой метод, но он парсит документ по указанному URL"у. А мне нужно один формат пути перевести в другой формат пути.


 
Anatoly Podgoretsky ©   (2010-07-05 14:59) [4]

> pit  (05.07.2010 14:56:03)  [3]

Чем же он не корректный, в результате останется только С:


 
Dennis I. Komarov ©   (2010-07-05 15:20) [5]

ExtractFullFileNameFromUrl()
RFC-1738


 
Юрий Зотов ©   (2010-07-05 15:22) [6]

> pit   (05.07.10 14:56) [3]

Поскольку ничего, кроме MSDN, Розыч не читает, то все, что он говорит надо искать там.

:o)


 
Dimka Maslov ©   (2010-07-05 15:57) [7]

В добавок к delete(s, 1, 8) написать цикл меняющий прямой слэш на обратный тоже не проблема.


 
Anatoly Podgoretsky ©   (2010-07-05 16:10) [8]

> Dimka Maslov  (05.07.2010 15:57:07)  [7]

Нужды менять нет, начиная с НТ файловая система совместима с Юникс,
понимает, как прямые, так и обратные слэши

notepad c:/autoexec.bat
notepad c:\autoexec.bat


 
Rouse_ ©   (2010-07-05 16:55) [9]


> pit   (05.07.10 14:56) [3]
> что это такое?

Это то что ты спрашиваешь, на будущее воспользуйся советом Зотыча:

Краткая справка:

#include <windows.h>
#include <shlwapi.h>
#include <stdio.h>
#include <tchar.h>

void sample(LPCTSTR pszUrl)
{
   PARSEDURL pu;
   pu.cbSize = sizeof(pu);
   HRESULT hr = ParseURL(pszUrl, &pu);
   _tprintf(TEXT("ParseURL(%s) returned 0x%08x\n"), pszUrl, hr);
   if (SUCCEEDED(hr)) {
       _tprintf(TEXT("Protocol = %.*s\n"), pu.cchProtocol, pu.pszProtocol);
       _tprintf(TEXT("Suffix   = %.*s\n"), pu.cchSuffix, pu.pszSuffix);
       _tprintf(TEXT("Scheme   = %d\n"), pu.nScheme);
       _tprintf(TEXT("\n"));
   }
}

int __cdecl main()
{
   sample(TEXT("http://msdn.microsoft.com/vstudio/"));
   sample(TEXT("mailto:someone@example.com"));
   sample(TEXT("file://C:\\AUTOEXEC.BAT"));
   sample(TEXT("C:\\AUTOEXEC.BAT"));
   return 0;
}  

OUTPUT:
---------

ParseURL(http://msdn.microsoft.com/vstudio/) returned 0x00000000
Protocol = http
Suffix   = //msdn.microsoft.com/vstudio/
Scheme   = 2

ParseURL(mailto:someone@example.com) returned 0x00000000
Protocol = mailto
Suffix   = someone@example.com
Scheme   = 4

ParseURL(file://C:\AUTOEXEC.BAT) returned 0x00000000
Protocol = file
Suffix   = C:\AUTOEXEC.BAT
Scheme   = 9

ParseURL(C:\AUTOEXEC.BAT) returned 0x80041001


 
pit   (2010-07-05 19:08) [10]

http://msdn.microsoft.com/en-us/library/bb773825%28VS.85%29.aspx

Поддерживается начиная с Vista. Абсолютно точно не подходит. Нужен вариант, совместимый с W2k минимум, а лучше и с w9x


 
pit   (2010-07-05 19:11) [11]


> ExtractFullFileNameFromUrl()
> RFC-1738

что такое ExtractFullFileNameFromUrl?


 
Rouse_ ©   (2010-07-05 19:48) [12]


> pit   (05.07.10 19:08) [10]
> Поддерживается начиная с Vista. Абсолютно точно не подходит

Включи голову.
В онлайн MSDN перечислены только те ОС, которые сейчас поддерживаются самой MS. О чем я тебе неоднократно кстати говорил, как по первому, так и по второму пункту.

А вот что об этом говорит локальный MSDN
Minimum operating systems: Windows 2000, Windows 2000 Server, Windows Server 2003, Windows XP.


 
jack128_   (2010-07-05 21:54) [13]


> В онлайн MSDN перечислены только те ОС, которые сейчас поддерживаются
> самой MS. О чем я тебе неоднократно кстати говорил, как
> по первому, так и по второму пункту.

дык MS WinXP еще поддерживает?


 
Anatoly Podgoretsky ©   (2010-07-05 21:56) [14]

2000 уже давно не поддерживает


 
pit   (2010-07-05 22:24) [15]


> Включи голову

Саш, перестань так общаться. Вообще-то об этом не ты мне говорил, а я тебе заметил, что в онлайн MSDN начали перечислять в минимуме только поддерживаемые ОС. И мы оба пришли к выводу, что это фигня какая-то, ибо окончание поддержки ОС от MS, не означает окончание поддержки этой ОС всех разработчиков продуктов под Windows.

Позиция номер два - там перечислена сразу Vista, хотя я также как и Жека считаю, что WinXP еще поддерживается, а она младше Vista. Возможно, поддержка Windows XP уже прекращена, но что-то слабо верится.


 
pit   (2010-07-05 22:26) [16]

Хотя вот:

В соответствии с политикой Microsoft Support Lifecycle, поддержка Windows XP будет продолжаться. Это означает, что основная фаза поддержки будет окончена лишь 14 апреля 2009 года, а расширенная фаза поддержки окончится 8 апреля 2014 года

Видимо, да, начиная с 14 апреля и началась эта фигня, что XP потихонечку исключают из минималки MSDN"а. Но не везде еще убрали, видимо.


 
DVM ©   (2010-07-05 22:34) [17]

Давно бы уже сами написали эту функцию. Не бог весть какая проблема.


 
NailMan ©   (2010-07-05 22:57) [18]

> [8] Anatoly Podgoretsky ©   (05.07.10 16:10)
> > Dimka Maslov  (05.07.2010 15:57:07)  [7]
>
> Нужды менять нет, начиная с НТ файловая система совместима
> с Юникс,
> понимает, как прямые, так и обратные слэши
>
> notepad c:/autoexec.bat
> notepad c:\autoexec.bat

Забавно, не знал. Проверил
d:/distr\soft/nmplayer\nmplayer g:/films\the.core.avi
работает чертяка на моем компе.

а я как дурак все рдею за "\" в путях еще со времен доса... :-(


 
Anatoly Podgoretsky ©   (2010-07-05 23:50) [19]

> NailMan  (05.07.2010 22:57:18)  [18]

Ты не дурак, при возможности надо придерживаться соглашения, но не ставить
это самоцелью.


 
Anatoly Podgoretsky ©   (2010-07-05 23:58) [20]

> NailMan  (05.07.2010 22:57:18)  [18]

http://www.transl-gunsmoker.ru/2010/05/dos.html


 
pit   (2010-07-06 10:53) [21]


> Давно бы уже сами написали эту функцию. Не бог весть какая
> проблема

если знать все варианты - конечно, написал бы. Сейчас знаю 2 момента:

1) надо убирать префикс file://
2) %20 заменять на пробел

Но есть подозрение, что могут быть и другие нюансы. Поэтому я и говорю, что нужна проверенная в РАБОТЕ функция.


 
Rouse_ ©   (2010-07-06 11:04) [22]


> pit   (05.07.10 22:24) [15]
> Саш, перестань так общаться. Вообще-то об этом не ты мне
> говорил, а я тебе заметил


Не передергивай:

Piter (11:57:32 10/06/2010)
не хочется одной функцией отрубать Win2000

Rouse_ (11:58:10 10/06/2010)
эээ эти функции еще с 95 в системе присутствуют

...

Rouse_ (12:00:03 10/06/2010)
это из-за того что поддержки нет, в январском MSDN написано следующее:

Minimum DLL Version comctl32.dll
Header Declared in Winuser.h, include Windows.h
Import library User32.lib
Minimum operating systems Windows 95, Windows NT 3.51

Piter (12:00:37 10/06/2010)
ясненько


По поводу Vista, а что мешает проверить перед тем как безапеляционно заявлять "Абсолютно точно не подходит"?


 
pit   (2010-07-06 13:35) [23]


> Не передергивай:

Да, Саш... Как ты элегантно вырезал мои ДВА ПОСТА и заменил их троеточием. Я понимаю бы тираду на килобайт бы вырезал... Но как раз вместо троеточия там мое сообщение о том, что, видимо, поддержки систем ниже нету.

Просто детский сад. Скоро в Макса Черных превратишься... Сори за флуд, я прекращаю.


 
Rouse_ ©   (2010-07-06 14:00) [24]

Мдя... Беда.


 
Фигасе   (2010-07-07 17:57) [25]


> Нужды менять нет, начиная с НТ файловая система совместима
> с Юникс,
> понимает, как прямые, так и обратные слэши
>


Фигасе! Я тоже не знал О_о
Пишу кроссплатформенную фигню и тоже меняю слеши в зависимости от операционки :)


 
Anatoly Podgoretsky ©   (2010-07-07 19:14) [26]

Прочитай статью по ссылке, автор кстати плодовитый, у него невероятное количество статей, в осном переведеных, но и свои тоже не мало. Это как Фленов, но в хорошем смысле.



Страницы: 1 вся ветка

Текущий архив: 2010.10.03;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.011 c
15-1278574649
Polkin
2010-07-08 11:37
2010.10.03
RTF-картинка (PHP)


2-1278664435
Irisss
2010-07-09 12:33
2010.10.03
загрузка файла по двойному щелчку


8-1205944562
MegaPiha
2008-03-19 19:36
2010.10.03
Как захватить видео из игры?


15-1278401604
Kolan
2010-07-06 11:33
2010.10.03
Обсуждение автоматического определения устройства


15-1278272969
картман
2010-07-04 23:49
2010.10.03
видео на весь экран