Создание структуры каталогов с юникодовыми именами - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы