VB.NETはじめる(その7)

更新日:2003/2/17

多倍長計算 加算編 性能テスト2

7.1 フォームの改良

(1)メニューバーの新設

フォームを上記のように改良した。
まず、メニューバーを設けた。そして、フォーム上のボタンを廃してメニューの中に命令を追加した。
具体的には、
 ファイル-開く、名前を付けて保存、上書保存、終了。
 編集-クリップボードへコピー
 計算-実行、中断、リセット
 ヘルプ-ヘルプ、バージョン情報
である。
メニューバーは、ツールボックスからMainMenuコントロールをフォームにドラッグする。
フォームのメニューバー位置の「ここへ入力」という個所をクリックしてメニュー項目を順次追加していく。
各メニュー項目をダブルクリックするとボタンの場合と同様にイベントプロシージャを作成することができる。

(2)データの保存

データをファイルに保存できるようにした。保存されるデータは、次のとおり。
データの先頭に「TbaichoKeisanSeino」という文字列、続いてa(n-2)、a(n-1)、a(n)の値の4つである。
ファイル全体は、テキストファイルとしている。ファイルを保存するためには、保存を司るダイアログボックスを作成する必要があるが、Windows標準のコントロールを利用できるので、自分で作成する必要はない。
このようなものを「コモンダイアログコントロール」という。ここでは、ファイルを保存する
「SaveFileDialog」とファイルを開く「FileOpenDialog」を利用した。これらは、ツールボックスにあるので、
フォームにドラッグドロップすることで利用できる。SaveFileDialog1.ShowDialog()がファイルを保存する
ダイアログボックスを開くメソッドである。
名前を付けて保存の場合のソースの骨子は、次のようになる。

Dim fileno As Integer
If filepath <> "" Then
   SaveFileDialog1.FileName = filepath
End If
SaveFileDialog1.ShowDialog()
If SaveFileDialog1.ShowDialog.Cancel = DialogResult.Abort Then Return
filepath = SaveFileDialog1.FileName
fileno = 1
FileOpen(fileno, filepath, OpenMode.Output)
Write(fileno, "TbaichoKasanSeino", txtA0.Text, txtA1.Text, txtAn.Text)
FileClose(fileno)

(3)新しい関数

ファイルを開く関数、FileOpen関数。ファイル番号は、1~255の数値、ファイルパスは、ファイルの名称をフルパス名で与える。
 OpenMode.Outputは、出力モード。
 入力の場合は、OpenMode.Inputとなる。追加は、OpenMode.Appendとなる。
Write関数は、データをダブルクォーテーションでくくった形で保存する。通常は、Input関数で読み込まれたデータを保存する場合に用いる。
 Writeln関数は、同様ではあるが、レコードの終わりに改行マークを付けて書き出す。いずれも、書き出す変数名をカンマで区切って括弧内に含める。
最後にファイルをクローズする関数がFileClose関数である。

(4)ファイルを開く

ファイルを保存する場合と同様に開く場合もコモンダイアログコントロールを利用できる。
その場合のコードは、次のとおり。OpenFileDialog1.ShowDialog()がファイルを開くダイアログボックスを起動するメソッドである。

Dim fileno As Integer
Dim str0, str1, str2, str3 As String
If filepath <> "" Then
  OpenFileDialog1.FileName = filepath
End If
OpenFileDialog1.ShowDialog()
If OpenFileDialog1.ShowDialog.Cancel = DialogResult.Abort Then Return
filepath = OpenFileDialog1.FileName
fileno = 1
FileOpen(1, filepath, OpenMode.Input)
Input(1, str0)
If str0 <> "TbaichoKasanSeino" Then
 MsgBox("ファイルが違います")
Return
End If
Input(1, str1)
Input(1, str2)
Input(1, str3)
FileClose(1)

(5)再び、新しい関数

データを読み込むInput関数。カンマで区切られたデータを変数に読み込む。
なお、今回の場合は、データが1レコードで、しかもデータの個数が4つということが最初から分かっているためファイルの終わりを検知するEof関数は、使用していないが、通常の場合は、Eof(ファイル番号)が真になるまでレコードを繰り返し、読み込む必要がある。

7.2 クリップボードの利用

a(n)の内容をクリップボードにコピーすることができるようにした。
クリップボードに変数の内容をコピーする手続きは、次のとおりである。
Clipboard.SetDataObject(変数名)

7.3 自作ものに追加

自作ものに追加した。「TbaichoKasanSeino2.lzh」という名称である。プログラム自体は、前バージョンと同様の名称なので注意してほしい。
なお、メニュー項目の内、「中断」、「ヘルプ」は、まだ、内容が未設定なのでクリックしても何も起きない。

VB.NETはじめるに戻る