Хакер писал(а):dr.MIG
На мой взгляд гораздо луче воспользоваться функцией InternetCanonicalizeUrl или InternetCombineUrl
Private Declare Sub InternetCanonicalizeUrl Lib "wininet.dll" Alias "InternetCanonicalizeUrlA" (ByVal lpszBaseUrl As String, ByVal ret As Long, ByRef lpdwBufferLength As Long, ByVal dwFlags As Long)
Private Sub Form_Load()
Dim strBuffer As String
strBuffer = String(255, 0)
Dim url As String
url = "d:\мой компьютер\айзек азимов\фыв.txt"
InternetCanonicalizeUrl url, StrPtr(strBuffer), 255, 0
MsgBox StrConv(strBuffer, vbUnicode)
End Sub
Хакер писал(а):Как ты собрался использовать формат?
Public Function MakeHex(Number, Length As Long) As String
Dim a As String
a = Hex(Number)
Do While Len(a) < Length
a = "0" + a
Loop
MakeHex = a
End Function
Хакер писал(а):Как ты собрался использовать формат?
Ну вообще-то в этом случае да. )bvv70 писал(а):Спасибо Хакеру, код прекрасно действует: из
D:\Библиотека TXT\Зарубежные авторы\А\АБНЕТТ Дэн\Рейвенор\01_Рейвенор.txt
получается:
file://D:\Библиотека%20TXT\Зарубежные%20авторы\А\АБНЕТТ%20Дэн\Рейвенор\01_Рейвенор.txt
что отлично понимается браузером. Получается что заменить можно было только пробел?
Function UrlDecode(url As String) As String
Dim pos As Long, char As String
pos = 1
url = Replace(url, "+", " ")
Do
pos = InStr(url, "%")
If pos = 0 Then Exit Do
char = Mid(url, pos + 1, 2)
url = Replace(url, "%" + char, Chr(CLng("&H" + char)), 1, 1)
Loop
UrlDecode = url
End Function
Private Declare Sub InternetCanonicalizeUrl Lib "wininet.dll" Alias "InternetCanonicalizeUrlA" (ByVal lpszBaseUrl As String, ByVal ret As Long, ByRef lpdwBufferLength As Long, ByVal dwFlags As Long)
Private Const ICU_DECODE = &H10000000
Private Const ICU_NO_ENCODE = &H20000000
Private Sub Form_Load()
Dim strBuffer As String
strBuffer = String(255, 0)
Dim url As String
'{
url = "Привет, Lumen!"
InternetCanonicalizeUrl url, StrPtr(strBuffer), 255, 0
'}
'{
url = StrConv(strBuffer, vbUnicode)
InternetCanonicalizeUrl url, StrPtr(strBuffer), 255, ICU_DECODE Or ICU_NO_ENCODE
'}
MsgBox StrConv(strBuffer, vbUnicode)
End Sub
Сейчас этот форум просматривают: YaCy [Bot], Yandex-бот и гости: 97