SAK 図書館

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

VB 基礎編 (その九) その他関数 declare、IsNull、hex、CDec、split、Choose

一応、基礎編最後のその他ステートメント、関数の説明です。

■DLL 呼び出し

  Public Declare Function GetUserNameA Lib "advapi32" (ByVal buf as string, size as long) As Long
  Public Declare Function GetUserName Lib "advapi32" Alias "GetUserNameA" (ByVal buf as string, size as long) As Long

  Windows API、DLL 関数を呼び出す場合に定義します。
  Alias を使用すると、DLL 内の関数名と別名で呼び出すことができます。
  Declare 定義した後は、通常の関数と同じに呼び出せます。
  尚、Windows API や C で作られた DLL のパラメタは一般に値渡しなので、
  ByVal キーワードが必要です。

■Command

  Windows に渡されたコマンドラインパラメタを引き取るには、次のようにする。
  (コマンドライン引数)

  dim cmdline as string

  cmdline = Command

■iif

  c = iif(a < b, b, a)
          |      |  |_ FALSE のときの返す値
          |      |_ TRUE のときの返す値
          |_ 評価式

  Excel のシートで使う if 関数みたいなもの。

■ubound

  i = ubound(a)
             |_ 配列 a の最大添字を返す

  i = ubound(b, 1)
             |  |_ n 次元目について調べる
             |_ 配列 b の最大添字を返す

'** 一般配列の未配列、動的配列添字上限取得サンプルコード
  dim a() as long
  print uboundsp(a)
  redim a(10) as long
  print uboundsp(a)

function uboundsp(v as variant) as long
  on error resume next
  uboundsp = ubound(v)
  if err <> 0 then uboundsp = -1
  on error goto 0
end function

'** 構造体配列の未配列、動的配列添字上限取得サンプルコード
'   構造体では variant による受け取りはコンパイルエラーとなる。
'   汎用性はなくなる。
  dim a() as rec
  print uboundrec(a)
  redim a(10) as rec
  print uboundrec(a)

type rec
  a as long
  b as long
end type

function uboundrec(v() as rec) as long
  on error resume next
  uboundrec = ubound(v)
  if err <> 0 then uboundrec = -1
  on error goto 0
end function

■lbound

  i = lbound(a)
             |_ 配列 a の最小添字を返す

  i = lbound(b, 1)
             |  |_ n 次元目について調べる
             |_ 配列 b の最小添字を返す

■Is...

  IsArray(変数)
          |_ 配列か調べる

  IsDate(変数)
         |_ 日付か調べる

  IsEmpty(変数)
          |_ 使われているか調べる

  IsNull(変数)
         |_ NULL 値か調べる

  IsNumeric(変数)
            |_ 数値か調べる

  IsObject(変数)
            |_ オブシェクトか調べる

  それぞれ該当する場合は TRUE が、そうでない場合は FALSE が返る。

■nothing

  set obj = nothing
      |_ オブジェクト変数

  レコードセット変数など、set で作成したオブジェクトリソースを解放する。

■array

  dim a as variant

  a = array(1, 200, 500)
  msgbox a(1) '** 200 が表示される

  配列として宣言していない variant 変数に配列をセットします。
  配列へのアクセスは、通常の a(0)、a(1)、a(2) のように添字でします。

■beep

  ポロン♪と音がなります。エラーのときなどにメッセージと合わせて使用。

■dir

  ファイルの所在を調べたりできます。
  尚、dir は、再帰処理には対応していない。
  再帰処理する場合は、ファイルシステムオブジェクトを使用した方が良い。

  dim fnm as string

  fnm = dir(g:\tmp\*.txt)
  do until fnm = ""
    '** ファイル毎の処理
    ...
    ...

    '** 次のファイル名取得
    fnm = dir()
  loop

■filecopy

  いつの間にこんなに便利なもの出来ていたんでしょう。(^◇^;)
  簡単にファイルコピーできるらしいです。(^^; (^^; (^^;

  filecopy "g:\tmp\a.xls", "g:\tmp\b.xls"

■filelen

  指定ファイルのサイズを返します。

■freefile

  標準ファイル I/O で使用するファイルハンドルの空いているハンドル番号を
  返します。

■hex

  16 進文字列に数値を変換します。(16 進数変換)

  【例】'** 13 を 16 進へ変換
        dim h as string

        h = hex(13)

        h には、"0D" がセットされます。

  【例】'** 16 進文字列を数値に変換
        dim n as integer

        n = val("&H" & "0D")

        n には、13 がセットされます。
        10 進数に変換するとき、16 ビット目がサインビットとなることに注意
        する。(&H8000 = - 32768、&HFFFF = -1)
        16 ビット符号なしとして処理する場合は、最後に & を付加する。

  【例】'** 32 ビット 16 進文字列を数値に変換
        dim n as long

        n = val("&HFFFF&")

        32 ビット目をサインビットとするので、
        &H8000 = 32768、&HFFFF = 65535 となる。
        尚、&H8000000& の 32 ビット目のサインビットはロジックでしか
        符号なし処理できない。

■kill

  ファイルを削除します。

■loc

  標準ファイル I/O でオープンした現在のシーク位置を返します。

■lof

  標準ファイル I/O でオープンしたファイルサイズを返します。

■seek

  標準ファイル I/O でオープンしたファイルの指定位置にシークします。

■name

  ファイル名を変更します。

■randomize

  乱数系列を初期化します。

■rnd

  乱数を発生します。

■sqr

  ルートを求めます。

■on error resume next

  エラーが発生しても次のステップへ行きます。

■err

  エラーコードを調べます。(正常 = 0)
  【注意】VB5 以上は long タイプです。

■on error goto 0

  エラートラップを禁止します。
  これが実行されると err は初期化されます。

■shell

  別のプログラムを起動します。
  (アプリケーション起動、他のプログラム起動)

  diim rcd as long

  rcd = shell("calc.exe", 1)

■raise

  オブジェクトの実行時エラーを生成します。

  object.raise ecd, , ems
               |      |_ エラーメッセージ
               |_ エラーコード

■データ型変換関数

  データ型の変換を行います。
  (数値変換、数値型変換、文字列変換、文字列型変換)

  a = CBool(データ)  '** 論理型
  a = CByte(データ)  '** バイト型
  a = CCur(データ)   '** 通貨型
  a = CDate(データ)  '** 日付型
  a = CDbl(データ)   '** 倍精度型
  a = CDec(データ)   '** 10 進型
  a = CInt(データ)   '** 整数型
  a = CLng(データ)   '** 長整数型
  a = CSng(データ)   '** 単精度型
  a = CVar(データ)   '** バリアント型
  a = CStr(データ)   '** 文字列型
           |_ 変数、または、演算結果

  旧 VB 互換データ型の変換を行います。

  a = CVDate(データ) '** 内部形式 Date のバリアント型
      |_ VB6 では、CDate を使用する

■split

  列挙データから、1 次元配列を返す。

  dim a as variant
  a = split("abc,def,123", ",")
             |              |_ 区切り記号
             |_ データ列挙
  msgbox a(1)

■SaveAs

  コンポーネント、プロジェクトを新しいファイル名を付けて保存する。

  object.SaveAs ("g:\tmp\test.frm")
  |_ オブジェクト

■文字列比較

  文字列の C 言語風比較を行う。

  dim rcd as variant

  rcd = StrComp(s1, s2, md)
  |             |   |   |_ -1 Option Compare 設定で比較
  |             |   |       0 パイナリ比較
  |             |   |       1 テキスト比較
  |             |   |       2 MDB 格納設定で比較
  |             |   |_ 変数2
  |             |_ 変数1
  |_ -1    s1 < s2
      0    s1 = s2
      1    s1 > s2
      null s1 = null or s2 = null

■Choose

  データのリストからの選択を行う。

  dim s as variant
  dim i as integer

  i = 2
  s = Choose(i, "abc", "def", "ghi")
  s = Choose(i, 100, 200, 300)
  |          |   |_ リスト1 (カンマでいくつものリストを指定する)
  |          |_ インデックス 1 〜 n (最初が 1)
  |_ 該当するデ−タ

■Dictionary

  Perl のハッシュ変数と同等の機能を提供する。

  dim hdata as variant

  Set hdata = CreateObject("Scripting.Dictionary")
  hdata.Add "key1", "data1"
  hdata.Add "key2", "data2"
             |       |_ データ
             |_ キー

  if hdata.Exists("key2") then
    msgbox "あり"
  else
    msgbox "なし"
  end if

  msgbox hdata.count
  msgbox hdata.item("key1")

  hdata.Remove "key2"
  hdata.RemoveAll

■End

  VB を終了する。(プログラム終了)
  オープンしているファイルはクローズされる。
  ウィンドウオブジェクトがある場合(フォームなど) は、一般的には
  unload form1 で、form_unload を呼び出して終了させる。
  end は、強制終了に近い。

  end

■LoadResString

  リソースファイル(.res .rc) のストリングテーブル(STRINGTABLE) を
  Windows API の LoadString(hInstance, IDS_IX, str, sizeof(str)); と
  同等に読み出す。

  dim s as string

  s = LoadResString(ix)
  |                 |_ STRINGTABLE ID
  |_ 文字データ

■debug.print

  VB 統合環境のインタプリタ実行でのみ有効なデバッグメッセージ表示機能。

  debug.print "エラー"

■円周率(PI)

  dim pi as double

  pi = 3.141592654

■TypeName 変数タイプ取得

  dim a as long

  msgbox TypeName(a)

■VB 基礎編資料
■VB 入門編資料
■VB ビジュアル編資料
■VB テクニック編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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



Copyright (C) 1999-2017 Y.SAK