ドリル作成ツール VB6 |
8.問題作成の処理U
問題文と問題データ及び解答データが作成できたので、ここでは問題と解答のデータをそれぞれ指定の基数に変換する処理を説明する。
'各問(中問題)の終端に"ア"を付けること。 '中問題の末尾に"イ"を付けること。 Private Function Mondai2(cnt As Integer, arry() As Double, bt As Long) As String '2進数問題作成 Dim ans As String, mon As String Dim n As Integer mon = "" For n = 1 To cnt mon = mon & Left(KAKKO2, 1) & Trim(Str(n)) & Right(KAKKO2, 1) & " " '番号 If bt = &HFF Then '1バイト ans = Right("00000000" & Dec2Bin(arry(n)), 8) ElseIf bt = &HFFFF Then '2バイト ans = Right("0000000000000000" & Dec2Bin(arry(n)), 16) Else ans = Dec2Bin(arry(n)) End If mon = mon & ans & "ア " Next n Mondai2 = Trim(mon) & "イ" End Function Private Function Mondai16(cnt As Integer, arry() As Double, bt As Long) As String '16進数問題作成 Dim ans As String, mon As String Dim n As Integer mon = "" For n = 1 To cnt mon = mon & Left(KAKKO2, 1) & Trim(Str(n)) & Right(KAKKO2, 1) & " " '番号 If bt = &HFF Then '1バイト ans = Right("00" & Dec2Hex(arry(n)), 2) ElseIf bt = &HFFFF Then '2バイト ans = Right("0000" & Dec2Hex(arry(n)), 4) Else ans = Dec2Hex(arry(n)) End If mon = mon & ans & "ア " Next n Mondai16 = Trim(mon) & "イ" End Function Private Function Mondai10(cnt As Integer, arry() As Double, bt As Long) As String '10進数問題作成 Dim ans As String, mon As String Dim n As Integer mon = "" For n = 1 To cnt mon = mon & Left(KAKKO2, 1) & Trim(Str(n)) & Right(KAKKO2, 1) & " " '番号 ans = Trim(Str(arry(n))) mon = mon & ans & "ア " Next n Mondai10 = Trim(mon) & "イ" End Function
2進数用Mondai2プロシージャと16進数用Mondai16プロシージャともほぼ同じ処理である。
コメント「番号」の部分で問題の番号([1]など)を作成し、データをそれぞれの進数に変換している。このとき、1バイトか2バイトかによってけた数をそろえている。Dec2BinプロシージャとDec2Hexプロシージャは共通処理で作成したものである。
10進数用Mondai10プロシージャは特別な処理はしていない。問題番号とデータを連結しているだけである。
これら3つのプロシージャでは前提条件にもあったように各問の終わりに半角のア、全体の終わりに半角のイを目印として付けている。
以上で簡単なプログラムの説明は終わりである。
プログラムリストと実行ファイル drilltool01.lzh (39KB)
基数変換.frm 28508
基数変換.frx 1090
基数変換.vbp 1020
基数変換.vbw 137
基数変換.exe 77824
DrillHelp.frm 2681
DrillSub.bas 18301
DrillSub.ini 1229
readme.txt 215
基数変換.exeを実行するにはVisualBASIC6.0のランタイムライブラリが必要です。
ランタイムライブラリなどは別途用意してください。
Copyright © 2003 Hiroshi Masuda |