Мое настольное приложение должно загружать файл из интернета.Путь к файлу известен, само имя файла является полувариабельным, то есть кто-то другой будет помещать туда новые файлы, и мое приложение должно будет загрузить их.
Теперь я хочу убедиться, что URL-адресэто безопасно, и это будет правильно интерпретировано.Кроме того, если в имени файла есть «#» (вы никогда не знаете), я хочу, чтобы оно было закодировано.Javascript имеет две разные функции для этого: encodeURI
и encodeURIComponent
.Последний, кроме всего прочего, также кодирует символы #.Конечно, я мог бы свернуть свой собственный, но я решил, что для этого обязательно должны быть функции, и я мог бы также избежать некоторой старой ошибки.
Я буду загружать файл с объектом, который используетсерия API-функций WinInet ( InternetOpen и тому подобное).
Итак, я начал копаться в MSDN и, конечно же, есть UrlCanonicalize .Но есть также UrlEscape , CreateUri (но его нет в блоках Delphi 2010) и, наконец, InternetCreateUrl , что требует от меня разделения всего URL.Я бы предпочел объединить первую часть URL-адреса с именем файла, закодированным URLE.
Кроме того, все они имеют тонны различных флагов, различных значений по умолчанию, которые изменились в течение версий Windows, и я не могувыяснить различия больше.Кто-нибудь знает, какой из них лучше для этой цели?