SAK 図書館
VB テクニック編3 - コマンドパラメタ取得、パス切り出し、半角変換
■SAK 関数利用規程
・テクニック編で紹介する関数は、私こと Y.SAK の開発関数である。
・著作権明示部分の改編は認めない。
・個人、企業がこれらの関数を使用したり、一部を使用して新たなシステムや
プログラムを開発することは自由です。
・但し、これらの関数を一部でも使用しているソフトウェアをシェアウェア、
その他有償プロダクトとして配布・販売するには、私の許可が必要です。
(無償のフリーソフトウェアなら、自由に配布しても良い。)
・これらの関数を使用して発生した、いかなる形での損害も私こと Y.SAK は
賠償しません。
■コマンドラインパラメタ取得(コマンドライン引数取得)
【使い方】
dim i as integer
dim cmdline as string
dim p1 as string
dim p2 as string
i = 1
cmdline = trim(command)
p1 = GetCmdPara(cmdline, i)
p2 = GetCmdPara(cmdline, i)
msgbox "p1= " & p1 & chr(10) & "p2= " & p2
'=======================================================================
' コマンドパラメタ取得
'=======================================================================
'【引数】
' para = コマンドパラメタ
' i = 【入出力】先頭位置
'【戻り値】
' string = パラメタ
' "" = なし
'【処理】
' ・半角空白で区切られたコマンドパラメタの先頭位置からパラメタを切り出
' して返します。
'【著作権】
' GetCmdPara() ver 1.00 Copyright (C) 1999 Y.SAK
'【履歴】
' 1999.04.17 sak ver 1.00 新規作成
'=======================================================================
Public Function GetCmdPara(para As String, i As Integer) As String
Dim j As Integer
Dim k As Integer
'** コマンドパラメタ取得
If i > Len(para) Then
GetCmdPara = ""
Exit Function
End If
j = InStr(i, para, " ")
For k = j + 1 To Len(para)
If Mid(para, k, 1) <> " " Then Exit For
Next
If k > Len(para) Then
j = 0
Else
j = k - 1
End If
If j = 0 Then
GetCmdPara = Trim(Mid(para, i, Len(para) - i + 1))
i = Len(para) + 1
Else
GetCmdPara = Trim(Mid(para, i, j - i))
i = j + 1
End If
End Function
■ディレクトリ名切り出し(ファイルパス名取得、ファイルパス取得)
【使い方】
msgbox GetPath("c:\test\a01.txt")
'=======================================================================
' ディレクトリ名切り出し
'=======================================================================
'【引数】
' path = パス付きファイル名
'【戻り値】
' string = ディレクトリ名
'【処理】
' ・fnm からディレクトリ名だけを切り出し返します。
'【著作権】
' GetPath() ver 1.00 Copyright (C) 1999 Y.SAK
'【履歴】
' 1999.04.17 sak ver 1.00 新規作成
'=======================================================================
Public Function GetPath(path As Variant) As String
Dim i As Integer
Dim fnm As String
'** ディレクトリ名切り出し
fnm = LCase(Trim(path))
For i = Len(fnm) To 1 Step -1
If Mid(fnm, i, 1) = "." Then Exit For
Next
If i = 0 Then fnm = fnm + "\"
For i = Len(fnm) To 1 Step -1
If Mid(fnm, i, 1) = "\" Then Exit For
Next
If i > 0 Then
GetPath = Left(fnm, i)
Else
For i = 1 To Len(fnm)
If Mid(fnm, i, 1) = ":" Then Exit For
Next
If i > 0 Then
GetPath = Left(fnm, i)
Else
GetPath = ""
End If
End If
End Function
■ファイル名切り出し
【使い方】
msgbox GetFilename("c:\test\a01.txt")
'=======================================================================
' ファイル名切り出し
'=======================================================================
'【引数】
' path = パス付きファイル名
'【戻り値】
' string = ファイル名
'【処理】
' ・fnm からファイル名だけを切り出し返します。
'【著作権】
' GetFilename() ver 1.00 Copyright (C) 1999 Y.SAK
'【履歴】
' 1999.04.17 sak ver 1.00 新規作成
'=======================================================================
Public Function GetFilename(path As Variant) As String
Dim i As Integer
Dim fnm As String
'** ファイル名切り出し
fnm = LCase(Trim(path))
If Right(fnm, 1) = "\" Then
GetFilename = ""
Else
For i = Len(fnm) To 1 Step -1
If Mid(fnm, i, 1) = "\" Then Exit For
Next
If i > 0 Then
GetFilename = Right(fnm, Len(fnm) - i)
Else
For i = 1 To Len(fnm)
If Mid(fnm, i, 1) = ":" Then Exit For
Next
If i < Len(fnm) Then
GetFilename = Right(fnm, Len(fnm) - i)
Else
GetFilename = ""
End If
End If
End If
End Function
■半角変換
【使い方】
msgbox Hankaku("ABCdef012", HAN_HAN)
msgbox Hankaku("ABCdef012", HAN_LOW)
msgbox Hankaku("ABCdef012", HAN_UP)
'=======================================================================
'** 半角変換定数宣言
Public Const HAN_HAN = 0
Public Const HAN_LOW = 1
Public Const HAN_UP = 2
Public Const HAN_NO = 9
'=======================================================================
' 半角変換
'=======================================================================
'【引数】
' dt = 文字列
' mode = 変換モード
' HAN_HAN = 半角にする
' HAN_LOW = 小文字半角にする
' HAN_UP = 大文字半角にする
'【戻り値】
' string = 半角文字列
'【処理】
' ・文字列を mode に従って半角にして返します。
' ・英数字記号以外の半角変換不能全角文字はそのまま返します。
'【著作権】
' Hankaku() ver 1.00 Copyright (C) 1999 Y.SAK
'【履歴】
' 1999.04.17 sak ver 1.00 新規作成
'=======================================================================
Public Function Hankaku(dt As Variant, mode As Integer) As String
Dim i As Integer
Dim s As String
Dim a As String
Dim z As String
'** データ整形
s = Trim(dt)
'** 半角変換
For i = 1 To Len(s)
a = Mid(s, i, 1)
If a >= " " And a <= "~" Or a >= "。" And a <= "゚" Then
z = z + a
Else
Select Case a
Case " "
z = z + " "
Case ","
z = z + ","
Case ":"
z = z + ":"
Case "."
z = z + "."
Case "/"
z = z + "/"
Case "−"
z = z + "-"
Case "ー"
z = z + "-"
Case Else
If a >= "0" And a <= "9" Or a >= "A" And a <= "Z" Then
z = z + Chr(Asc(a) + &H7DE1)
Else
If a >= "a" And a <= "z" Then
z = z + Chr(Asc(a) + &H7DE0)
Else
z = z + a
End If
End If
End Select
End If
Next
'** 大文字、小文字変換
Select Case mode
Case HAN_LOW
z = LCase(z)
Case HAN_UP
z = UCase(z)
End Select
'** 半角文字列セット
Hankaku = z
End Function
■VB テクニック編資料
■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料