SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 ビジュアル編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK