パス名の操作(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