さらに、文字列を扱うユーザ定義関数として使えそうなものを作成してみました。
尚、GfCut$関数は、以前存在した「ハンディターミナル(BHT)の部屋」というサイトからの引用です。
また、GsPrintFull関数は画面の横幅を20文字と限定しています。(フォントの設定が24ドット)
=====
2016/04/02:の時の情報
| 関数定義 | 引数 | 戻り値 |
|---|---|---|
指定バイト数内に収まる文字列を戻すFunction GfCut$(pstrValue$, pintMax%)[255] |
pstrValue$:対象文字列 pintMax%:指定バイト |
GfCut$:結果文字列 |
横幅一杯でのテキスト表示Sub GsPrintFull(Byval pstrSrc$) |
pstrSrc$:対象文字列 |
'---------------------------------------
'指定バイト数内に収まる文字列を戻す関数
'---------------------------------------
'Function GfCut$(pstrValue$, pintMax%)[255]
'引 数:
' pstrValue$:対象文字列
' pintMax%:指定バイト数
'戻り値:
' GfCut$ :結果文字列
'---------------------------------------
Function GfCut$(pstrValue$, pintMax%)[255]
'エラー処理宣言
On Error Goto GfCut.ErrProc
Private intPos%, intErr%, intLoop%, intChr%, strRet$[255]
intPos% = 0
intErr% = GcFalse%
intLoop% = GcTrue%
While intLoop% = GcTrue%
'ASCIIコード取得
intChr% = Asc(Mid$(pstrValue$, intPos% + 1, 1))
'2バイト文字(先頭バイトがSJISコード??)
If &H80 <= intChr% And intChr% <= &H9F Then
intPos% = intPos% + 2
If intPos% > pintMax% Then
'最大バイト長を超える場合、前の状態に戻すフラグON
intErr% = GcTrue%
End If
If intPos% >= pintMax% Then
'最大バイト長に達する場合は、その場で終了
If intErr% = GcTrue% Then
strRet$ = Mid$(pstrValue$, 1, intPos% - 2)
Else
strRet$ = Mid$(pstrValue$, 1, intPos%)
End If
intLoop% = GcFalse%
End If
'1バイト文字
Else
intPos% = intPos% + 1
If intPos% >= pintMax% Then
'最大バイト長に達する場合は、その場で終了
strRet$ = Mid$(pstrValue$, 1, intPos%)
intLoop% = GcFalse%
End If
End If
WEnd
GfCut$ = strRet$
GfCut.Return '関数戻り
On Error Goto 0
Exit Function
'-----
'エラー処理
'-----
GfCut.ErrProc
GfCut$ = ""
Resume GfCut.Return
End Function
const McMaxColumns% = 20 '画面の半角桁数MAX
'---------------------------------------
'横幅一杯でのテキスト表示
'---------------------------------------
'Sub GsPrintFull(Byval pstrSrc$)
'引 数:
' pstrSrc$:対象文字列
'---------------------------------------
Sub GsPrintFull(Byval pstrSrc$)
'エラー処理宣言
On Error Goto GsPrintFull.ErrProc
Private strWK$[255]
strWK$ = GfCut$(pstrSrc$ + " ", McMaxColumns%)
If Len(strWK$) < McMaxColumns% Then
strWK$ = strWK$ + LEFT$(" ", McMaxColumns% - Len(strWK$))
Endif
Print strWK$;
GsPrintFull.Return '関数戻り
On Error Goto 0
Exit Sub
'-----
'エラー処理
'-----
GsPrintFull.ErrProc
Resume GsPrintFull.Return
End Sub
尚、GfCut$関数は、以前存在した「ハンディターミナル(BHT)の部屋」というサイトからの引用です。
また、GsPrintFull関数は画面の横幅を20文字と限定しています。(フォントの設定が24ドット)
=====
2016/04/02:の時の情報
PR
コメント