WILLはネットワークに関するあらゆるソリューションをご提供します。
株式会社ウィル

HOME 新着情報 製品一覧 受託開発 Download 購入方法 トライアル サポート 会社案内

テキストビューアサンプル KVIEWER Ver1.03

▼概要  ▼ソースコード  プログラムのダウンロード→

概 要

KVIEWERは汎用のテキストビューアーです。これを用いると、JISコード、ShiftJISコード、EUCコードのテキストファイルを閲覧する事が出来ます。
開くメニューで指定したテキストファイルをShiftJISコードに変換して表示します。KVIEWERのパッケージにはサンプルファイルとして、SAMPLE_JIS.TXT、SAMPLE_EUC.TXT、SAMPLE_SJIS.TXTが同梱されています。


▲TOPへ

ソースコード

KVIEWERフォーム

'(C)COPYRIGHT 1997 WILL
Option Explicit

Dim org_txt$    'ファイルから読み込んだデータを保存する

Private Sub Form_Load()
    If (Command$ <> "") Then                '引数にファイルを指定されたら
        org_txt = ReadFile(Command$)        'それを読み込み
        Call mnuEditCodeSub_Click(0)        '変換する
    End If
End Sub

Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, Y As Single)
    If (Data.GetFormat(vbCFFiles) = True) Then  'ドロップされたら
        org_txt = ReadFile(Data.Files(1))       'それを読み込み
        Call mnuEditCodeSub_Click(0)            '変換する
    ElseIf (Data.GetFormat(vbCFText) = True) Then  'ドロップされたら
        org_txt = StrConv(Data.GetData(vbCFText), vbFromUnicode)
        Call mnuEditCodeSub_Click(0)            '変換する
        
    End If
End Sub

'画面の大きさの変更に合わせてテキストボックスの大きさも変更する
Private Sub Form_Resize()
    'テキストボックスを画面いっぱいに表示する
    Text2.Left = 0
    Text2.Top = 0
    Text2.Width = ScaleWidth
    Text2.Height = ScaleHeight
End Sub

'ヴァージョン情報の表示
Private Sub mnuAbout_Click()
    about.Show vbModal
End Sub
'メニューの文字コードを変更する
Private Sub mnuEditCodeSub_Click(Index As Integer)
    Dim tmp$            '変換前のデータ。変換された部分は削除されて行く
    Dim out$            '変換後のデータ。
    Static selected%    '以前に選択された文字コード
    
    If (org_txt = "") Then  '変換すべきものがないなら
        Exit Sub            'なにもしない
    End If
    tmp = org_txt       'ファイルから読み込んだデータを取り出す
    Select Case Index   '元のファイルのデータの文字コードに応じて変換する
    Case 0  '自動
        out = Kanji1.Any2Sjis(tmp)
    Case 1  '元のデータはJIS
        out = Kanji1.Jis2Sjis(tmp)
    Case 2  '元のデータはSJIS。変換しなくてよい
        out = tmp
    Case 3  '元のデータはEUC
        out = Kanji1.Euc2Sjis(tmp)
    End Select
    Text2.Text = StrConv(out, vbUnicode)        'さらにUnicodeに変換する
    mnuEditCodeSub(selected).Checked = False
    selected = Index
    mnuEditCodeSub(selected).Checked = True
End Sub

'終了する
Private Sub mnuExit_Click()
    End
End Sub

'指定されたファイルからデータを読み込む。引数fはファイル名。戻り値はデータ。
Private Function ReadFile$(ByVal f$)
    Dim ff%         'ファイルディスクリプタ
    Dim x() As Byte '読み込んだデータ

    On Error GoTo nofile    'エラーがあったらなにもしない
    ff = FreeFile           '空いているファイルディスクリプタを得る
    Open f For Input As ff  'ファイルを読み込みモードでオープンする
    Close ff
    Open f For Binary Access Read As ff
    If (LOF(ff) > 0) Then   'ファイルにデータがあるなら、
        ReDim x(1 To LOF(ff)) 'ファイルサイズ分のバイト配列を用意する
        Get ff, , x         'ファイルサイズ分リードする
    End If
    Close ff                'クローズする
    ReadFile = x            '文字変数として返す
    Exit Function
nofile:
    MsgBox f & ":" & Err.Description, , "ReadFile"
End Function

Private Sub Text2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, Y As Single)
    If (Data.GetFormat(vbCFFiles) = True) Then  'ドロップされたら
        org_txt = ReadFile(Data.Files(1))       'それを読み込み
        Call mnuEditCodeSub_Click(0)            '変換する
    ElseIf (Data.GetFormat(vbCFText) = True) Then  'ドロップされたら
        org_txt = StrConv(Data.GetData(vbCFText), vbFromUnicode)
        Call mnuEditCodeSub_Click(0)            '変換する
    End If
End Sub

Aboutフォーム

'(C)COPYRIGHT 1997 WILL
Option Explicit
'OKボタン
Private Sub Command1_Click()
    Unload Me
End Sub
'ロードされた
Private Sub Form_Load()
    'Kanji.OCXのヴァージョン情報を表示する
    Label2 = kviewer.Kanji1.Copyright
End Sub

(C) Copyright 2003 WILL Corporation. All rights reserved.