SAK 図書館

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

VB テクニック編34 - テキストファイル行数計算、文字数計算、クリップボード

■SAK 関数利用規程

  ・テクニック編で紹介する関数は、私こと Y.SAK の開発関数である。
  ・著作権明示部分の改編は認めない。
  ・個人、企業がこれらの関数を使用したり、一部を使用して新たなシステムや
    プログラムを開発することは自由です。
  ・但し、これらの関数を一部でも使用しているソフトウェアをシェアウェア、
    その他有償プロダクトとして配布・販売するには、私の許可が必要です。
    (無償のフリーソフトウェアなら、自由に配布しても良い。)
  ・これらの関数を使用して発生した、いかなる形での損害も私こと Y.SAK は
    賠償しません。

■テキストファイル行数計算

  ・テキストファイル、ソースプログラムなどの行数を計算するには、
    次のようにする。(ファイル行数表示、ファイル行数カウント)
    spct に true を渡すと改行のみの行も加算される。
    spct に false を渡すと改行のみの行は加算されない。
    尚、1 行を改行コードで認識している。(CR/LF)
    少し、修正すれば、注釈行は加算しないなどにもできる。

Private Sub Command1_Click()

  dim ct as long

  ct = CntRec("g:\tmp\test.frm", true)
  select case ct
    case -1
      msgbox "オープンエラー"
    case -2
      msgbox "リードエラー"
    case else
      msgbox "行数 = " & ct
  end select

End Sub

Public Function CntRec(fnm as string, spct as boolean) as long

  dim fno as integer
  dim ct as long
  dim rec as string

'** エラーセット
  CntRec = -1

'** エラートラップ開始
  on local error resume next

'** ファイルオープン
  fno = freefile
  open fnm for input as fno len = 32000
  if err <> 0 then exit function

'** レコード加算
  ct = 0
  do until eof(fno)
    line input #fno, rec
    if spct then
      ct = ct + 1
    else
      if trim(rec) <> "" then ct = ct + 1
    end if
  loop
  if err <> 0 then ct = -2

'** ファイルクローズ
  close fno

'** エラートラップ開始
  on local error goto 0

'** 正常終了セット
  CntRec = ct

End Function

■テキスト文字数計算

  ・テキストファイル、ソースプログラムなどの文字数を計算するには、
    次のようにする。(ファイル文字数表示、ファイル文字数カウント)
    spct に true を渡すと半角空白、全角空白、タブも加算される。
    (但し、改行は計算しない。)
    spct に false を渡すと半角空白、全角空白、タブ、改行は加算されない。

Private Sub Command1_Click()

  dim ct as long

  ct = CntChr("g:\tmp\test.frm", true)
  select case ct
    case -1
      msgbox "オープンエラー"
    case -2
      msgbox "リードエラー"
    case else
      msgbox "文字数 = " & ct
  end select

End Sub

Public Function CntChr(fnm as string, spct as boolean) as long

  dim fno as integer
  dim ct as long
  dim rec as string
  dim i as long

'** エラーセット
  CntChr = -1

'** エラートラップ開始
  on local error resume next

'** ファイルオープン
  fno = freefile
  open fnm for input as fno len = 32000
  if err <> 0 then exit function

'** 文字数加算
  ct = 0
  do until eof(fno)
    line input #fno, rec
    for i = 1 to len(rec)
      if spct then
        ct = ct + 1
      else
        select case mid(rec, i, 1)
          case " ", " ", chr(&H09)
          case else
            ct = ct + 1
        end select
      end if
    next
  loop
  if err <> 0 then ct = -2

'** ファイルクローズ
  close fno

'** エラートラップ開始
  on local error goto 0

'** 正常終了セット
  CntChr = ct

End Function

■クリップボード操作

  ・Windows のクリップボードを使用するには、次のようにする。

  dim s as string

'** クリップボードへコピー
  s = "コピーデータ"
  Clipboard.SetText s, vbCFText

'** クリップボードからデータ取得
  s = Clipboard.GetText(vbCFText)
  msgbox s

'** クリップボードクリア
  Clipboard.Clear

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

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



Copyright (C) 1999-2017 Y.SAK