Создание структуры каталогов с юникодовыми именами - VB
Формулировка задачи:
Привет !
Подскажите, пожалуйста, как будет правильно для юникод-версии функции?
Решение задачи: «Создание структуры каталогов с юникодовыми именами»
textual
Листинг программы
Option Explicit
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryW" (ByVal lpPathName As Long, lpSecurityAttributes As Any) As Long
Private Declare Function PathIsDirectory Lib "Shlwapi" Alias "PathIsDirectoryW" (ByVal pszPath As Long) As Long
Private Declare Function PathFindNextComponent Lib "Shlwapi" Alias "PathFindNextComponentW" (ByVal pszPath As Long) As Long
Private Sub Form_Load()
Dim lr As Long
Stop
lr = CreateFolderStruct("D:\2\3\4\file", True)
End Sub
Function CreateFolderStruct(Path As String, Optional ByVal LastComponentIsFile As Boolean = False) As Long
' ÑîçäГ*ГҐГІ ñòðóêòóðó ГЄГ*ГІГ*ëîãîâ (îòГ*îñèòåëüГ*ûå ГЇГіГІГЁ Г*ГҐ ïîääåðæèâГ*ГѕГІГ±Гї)
' LastComponentIsFile - ÿâëÿåòñÿ ëè ïîñëåäГ*ГЁГ© êîìïîГ*ГҐГ*ГІ ГіГЄГ*Г§Г*Г*Г*îãî ГЇГіГІГЁ ГґГ*éëîì ?
Dim lPs As Long, lPp As Long, l As Long, sz As Long, status As Boolean
lPs = StrPtr(Path): lPp = lPs: sz = Len(Path): status = True
Do
lPp = PathFindNextComponent(lPp)
l = (lPp - lPs) \ 2
If lPp = 0 Or (LastComponentIsFile And l = sz) Then Exit Do
If l < sz Then Mid(Path, l, 1) = vbNullChar
If PathIsDirectory(lPs) = 0 Then
If CreateDirectory(lPs, ByVal 0&) = 0 Then status = False
End If
If l < sz Then Mid(Path, l, 1) = "\"
Loop While lPp And status
CreateFolderStruct = status
End Function