Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как преобразовать путь типа 'file:///D:/xxx.xxx', стандартными средствами 
:(
    Опции темы
Delphist
Дата 4.10.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Как преобразовать путь типа 'file:///D:/xxx.xxx' в 'D:\xxx.xxx', стандартными средствами системы. А то у меня из-за этой фигни ShFileOperation не поризводит копирование.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Rrader
Дата 4.10.2007, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Код

Function GetPath(AURL: String): String;
Var
  S, SType: String;
  P: Integer;
Begin
  Result := '';
  S := StringReplace(AURL, '|', ':', [rfReplaceAll]);
  S := StringReplace(AURL, '%20', ' ', [rfReplaceAll]);
  P := Pos(':', S) + 2;
  SType := Copy(S, 1, P);
  If LowerCase(SType) = 'file://' Then
  Begin
    S := StringReplace(Copy(S, P + 1, MaxInt), '/', '\', [rfReplaceAll]);
    Result := S;
  End;
End;


Добавлено через 33 секунды
Стандартных средств не встречал. Чем не устраивают нестандартные?


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Alix
Дата 4.10.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 7
Всего: 23



Тогда лучше воспользоваться (from DRKB, а где-то видел быструю ассемблерную реализацию):
Код
function URLToText(aValue : string) : string;
var
  X : Integer;

begin
  Result := '';
  X := 1;

  while X <= Length(aValue) do begin
    if aValue[X] <> '%' then
      Result := Result + aValue[X]
    else begin
      Result := Result + Chr( HexToInt( Copy(aValue,X+1,2) ) );
      Inc(X,2);
    end;
    
    Inc(X);
  end;
end;

И потом просто изменить слеши и убрать file://. Кстати для изменения слешей есть стандартная функция UnixPathToDosPath (unit HTTPApp). Кстати там же есть и стандартная реализация (более корректная) приведенной выше функции - HTTPDecode.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Delphist
Дата 4.10.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Alix @  4.10.2007,  16:38 Найти цитируемый пост)
Кстати там же есть и стандартная реализация (более корректная) приведенной выше функции - HTTPDecode. 

Где там smile, поконкретнее, пожалуйста. 


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Alix
Дата 4.10.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 7
Всего: 23



В модуле HTTPApp очевидно...
Только ведь речь не о функции Rrader'a, а о функции URLToText.

Это сообщение отредактировал(а) Alix - 4.10.2007, 16:56


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
Delphist
Дата 4.10.2007, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Alix @  4.10.2007,  17:55 Найти цитируемый пост)
В модуле HTTPApp очевидно... 

Не фига HTTPDecode не работает, например, есть такая строка 
'file:///D:/usr/Delphi/FM/html/images/anime.JPG'
должно было получиться 
'D:\usr\Delphi\FM\html\images\anime.JPG', но не получается




--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Alix
Дата 4.10.2007, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 7
Всего: 23



Повторяю еще раз, я говорил о функции UrlToText, которая строку
http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%...%82%D0%BE%D1%80
приведет к виду
http://ru.wikipedia.org/wiki/Калькулятор
А упомянул я о ней из-за строчек:
Код
  S := StringReplace(AURL, '|', ':', [rfReplaceAll]); // кстати вот это я не понял зачем
  S := StringReplace(AURL, '%20', ' ', [rfReplaceAll]);

Которые выполняют лишь часть работы этой функции. Т.е. вместо них желательно было поставить UrlToText или аналог. А вообще код Rrader'a полностью рабочий, чем он тебе не гож?


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
SAVANE
Дата 4.10.2007, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 20.7.2006
Где: Украина, Полтава

Репутация: нет
Всего: 1



Мож не в тему ляпну
но в подобных случаях
 делаю типа такого
Код

s:='file:\\\D:\xxxxxxxxx.xxx';
delete(s, 0 , 8);

--------------------
Be not afraid of growing slowly, be afraid only of standing still!
PM MAIL WWW ICQ   Вверх
Coder
Дата 5.10.2007, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 5
Всего: 11



SAVANE, в Паскале строки начинаются с еденички.
PM MAIL   Вверх
Delphist
Дата 5.10.2007, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Alix @  4.10.2007,  23:19 Найти цитируемый пост)
Повторяю еще раз, я говорил о функции UrlToText, которая строку
http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%...%82%D0%BE%D1%80
приведет к виду
http://ru.wikipedia.org/wiki/Калькулятор

А незнаешь стандартной функции, которая бы из
'file:///D:/usr/Delphi/FM/html/images/anime.JPG'
должно было бы получиться 
'D:\usr\Delphi\FM\html\images\anime.JPG', но не получается


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Alix
Дата 5.10.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 7
Всего: 23



не знаю


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.