パス名の操作(V)          <TOP>


パスに関する機能をテストします。

PathMakePretty 大文字のパスを小文字に変換

PathQuoteSpaces パスを表す文字列にスペース文字がある場合は、文字列全体をダブルクォーテーションマークで囲む

PathUnquoteSpaces パスの前後のダブルクォーテーションを取り除く

PathStripPath パスからファイル名部分を取り出す

PathStripToRoot パスからルートパスを取り出す

PathMatchSpec ワイルドカードの形式と一致する文字列を検索

PathMakeSystemFolder システムフォルダのファイル属性を設定

PathIsSystemFolder パスがシステムフォルダであるかどうか判定

 

 

'================================================================
'= パス名の操作(V)
'=    (PathFunction.bas)
'================================================================
#include "Windows.bi"

' 大文字のパスを小文字に変換
Declare Function Api_PathMakePretty& Lib "shlwapi" Alias "PathMakePrettyA" (ByVal pszPath$)

' パスを表す文字列にスペース文字がある場合は、文字列全体をダブルクォーテーションマークで囲む
Declare Sub Api_PathQuoteSpaces Lib "shlwapi" Alias "PathQuoteSpacesA" (ByVal lpsz$)

' パスの前後のダブルクォーテーションを取り除く
Declare Sub Api_PathUnquoteSpaces Lib "shlwapi" Alias "PathUnquoteSpacesA" (ByVal lpsz$)

' パスからファイル名部分を取り出す
Declare Sub Api_PathStripPath Lib "shlwapi" Alias "PathStripPathA" (ByVal pszPath$)

' パスからルートパスを取り出す
Declare Function Api_PathStripToRoot& Lib "shlwapi" Alias "PathStripToRootA" (ByVal pszPath$)

' ワイルドカードの形式と一致する文字列を検索
Declare Function Api_PathMatchSpec& Lib "shlwapi" Alias "PathMatchSpecA" (ByVal pszFile$, ByVal pszSpec$)

' システムフォルダのファイル属性を設定
Declare Function Api_PathMakeSystemFolder& Lib "shlwapi" Alias "PathMakeSystemFolderA" (ByVal pszPath$)

' パスがシステムフォルダであるかどうか判定
Declare Function Api_PathIsSystemFolder& Lib "shlwapi" Alias "PathIsSystemFolderA" (ByVal pszPath$, ByVal dwAttrb&)

Var Shared List1 As Object
List1.Attach GetDlgItem("List1") : List1.SetFontSize 14

'================================================================
'=    Chr$(0)の除去
'================================================================
Declare Function StripTerminator(sInput As String) As String
Function StripTerminator(sInput As String) As String
    Var ZeroPos As Long
    ZeroPos = InStr(1, sInput, Chr$(0))
    If ZeroPos > 0 Then
        StripTerminator = Left$(sInput, ZeroPos - 1)
    Else
        StripTerminator = sInput
    End If
End Function

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var sSave As String
    Var State As String
    Var Ret As Long

    sSave = "C:\THE DIR\MYFILE\" & String$(100, 0)
    List1.AddString "元の文字列:" & StripTerminator(sSave)
    
    Ret = Api_PathMakePretty(sSave)
    List1.AddString "■パスを全て小文字に変換"
    List1.AddString "  PathMakePretty" & "    →" & StripTerminator(sSave)
    
    Api_PathQuoteSpaces sSave
    List1.AddString "■スペース文字がある場合は、文字列全体を(" & Chr$(&H22) & Chr$(&H22) & ")で囲む" 
    List1.AddString "  PathQuoteSpaces" & "   →" & StripTerminator(sSave)
    
    Api_PathUnquoteSpaces sSave
    List1.AddString "■パスの前後のダブルクォーテーションを取り除く"
    List1.AddString "  PathUnquoteSpaces" & " →" & StripTerminator(sSave)
    
    Ret = Api_PathStripToRoot(sSave)
    List1.AddString "■パスからルートパスを取り出す"
    List1.AddString "  PathStripToRoot" & "   →" & StripTerminator(sSave)
    List1.AddString ""

    sSave = "c:\tokovalue\abc.txt"
    List1.AddString "■" & sSave & "からファイル名部分を取り出す"
    Api_PathStripPath sSave
    List1.AddString "  PathStripPath" & "     →"& StripTerminator(sSave)
    
    List1.AddString "■ワイルドカードの形式と一致する文字列を検索"
    Ret = Api_PathMatchSpec("c:\dir\file.ext", "*.e?t")
    If Ret = 0 Then State = "False" else State = "True"
    List1.AddString "  PathMatchSpec" & "     →" & State
    
    'SystemFolderになるように適切な属性をWindowsDirectoryに与える
    Ret = Api_PathMakeSystemFolder("c:\windows")
    Ret = Api_PathIsSystemFolder("c:\windows", 0)
    If Ret = 0 Then State = "False" else State = "True"
    '成功したかどうかのチェック
    List1.AddString "WindowsDirectoryは、現在SystemDirectory? " & State
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End