Страница: 1 |
Страница: 1 |
Вопрос: Регистр символов в пути на диске
Добавлено: 28.10.07 21:08
Автор вопроса: Winand | Web-сайт:
Можно ли как-то на VB6 с помощью API узнать путь на диске с учетом регистра символов?
Например: вводим "g:\мои документы"
а программа выводит "G:\Мои документы"
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 28.10.07 21:11
закачал вот эту интересную штуку
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId=69481
А она почему-то русские символы требует в нужном регистре
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 28.10.07 22:15
а смысл какой? все равно системе пофиг какой у тебя там регистр....
ну да ладно я сделал так. не знаю как иначе.
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Private Function CreatePath(ByVal sPath As String) As String
Dim File As WIN32_FIND_DATA
Dim Arr() As String
If Right$(sPath, 1) = "\" Then sPath = Left$(sPath, Len(sPath) - 1)
Arr = Split(sPath, "\"
sResult = UCase$(Arr(0)) & "\"
For i = 1 To UBound(Arr)
ret = FindFirstFile(sResult & Arr(i), File)
FindClose ret
sResult = sResult & Left$(File.cFileName, InStr(1, File.cFileName, Chr$(0)) - 1) & "\"
Next
sResult = Left$(sResult, Len(sResult) - 1)
CreatePath = sResult
End Function
Private Sub Form_Load()
ret = CreatePath("c:\webservers\hoMe"
End Sub
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 29.10.07 00:33
Дык вы тему не сечёте, вдруг придут времена, когда вб6, и проги скомпиленые на нём, на чистом линуксе будут запускаться.. во.. а продвинутые разработчики уже сейчас в своих прогах это предусматривают, заботясь о регистре букв в пути..
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 29.10.07 01:09
ага, прописывают C:\Windows в путях.
Номер ответа: 5
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #5
Добавлено: 29.10.07 09:49
ну вот вам код заботьтесь тоже
Номер ответа: 6
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #6
Добавлено: 30.10.07 00:41
Вы, это... как бы.. Ответ номер 1 прочитайте.
Это контрол для обзора директорий, использующий системное SHBrowseForFolder.
Я не знаю чё это за глюки, но именно имена папок на русском нужно передавать в правильном регистре...
Номер ответа: 7
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #7
Добавлено: 30.10.07 08:30
ну как я написал работает хоть?
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #8
Добавлено: 30.10.07 19:26
если бы еще кое-кто переменные объявлял)) было бы замечательно. А так работает вроде. спс
Номер ответа: 9
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #9
Добавлено: 30.10.07 19:44
Даже вот так лучше немножко
Const MAX_PATH = 260
Const INVALID_HANDLE_VALUE = -1
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Private Function CreatePath(ByVal sPath As String) As String
Dim File As WIN32_FIND_DATA
Dim Arr() As String
Dim sResult As String
Dim i As Long, ret As Long
If Right$(sPath, 1) = "\" Then sPath = Left$(sPath, Len(sPath) - 1)
Arr = Split(sPath, "\"
sResult = UCase$(Arr(0)) & "\"
For i = 1 To UBound(Arr)
ret = FindFirstFile(sResult & Arr(i), File)
If ret = INVALID_HANDLE_VALUE Then
CreatePath = "ERR_"
Exit Function
End If
FindClose ret
sResult = sResult & Left$(File.cFileName, InStr(1, File.cFileName, Chr$(0)) - 1) & "\"
Next
sResult = Left$(sResult, Len(sResult) - 1)
CreatePath = sResult
End Function
Private Sub Form_Load()
Dim ret As String
ret = CreatePath("g:\мои докУментЫ\my Music"
Debug.Print ret
End Sub