Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Регистр символов в пути на диске Добавлено: 28.10.07 21:08  

Автор вопроса:  Winand | Web-сайт: winandfx.narod.ru
Можно ли как-то на VB6 с помощью API узнать путь на диске с учетом регистра символов?

Например: вводим "g:\мои документы"
а программа выводит "G:\Мои документы"

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #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-сайт: domkratt.com
 Профиль | | #2
Добавлено: 28.10.07 22:15
а смысл какой? все равно системе пофиг какой у тебя там регистр....
ну да ладно =) я сделал так. не знаю как иначе.
Const MAX_PATH = 260
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-сайт: domkratt.com
 Профиль | | #5
Добавлено: 29.10.07 09:49
ну вот вам код =) заботьтесь тоже =)

Ответить

Номер ответа: 6
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #6
Добавлено: 30.10.07 00:41
Вы, это... как бы.. Ответ номер 1 прочитайте.

Это контрол для обзора директорий, использующий системное SHBrowseForFolder.

Я не знаю чё это за глюки, но именно имена папок на русском нужно передавать в правильном регистре...

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 30.10.07 08:30
ну как я написал работает хоть?

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 30.10.07 19:26
если бы еще кое-кто переменные объявлял)) было бы замечательно. А так работает вроде. спс

Ответить

Номер ответа: 9
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #9
Добавлено: 30.10.07 19:44
Даже вот так лучше немножко
Option Explicit
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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам