フォーム転送メールの変換 VB6 |
変換の処理T
変換用のボタンを一つ追加する。
ボタン(cmdHenkan)
(オブジェクト名) … cmdHenkan、 Caption … 変 換
Height … 375、 Left … 1560、 Top … 5160、 Width … 1215
元のデータを1文字ずつ取り出し、記号"&"と"+"を変換する。英数字はそのままとする処理を考える。
元のデータの文字数分を繰り返して処理することになるのでFor文でのループが考えられるが、記号"%"のときは次の2文字が必要になることもあるので、ここではDo〜Loopでループする。そのためには、終わりが判定できなければならないので、最初に元のデータに終わりのマークを追加しておく。終わりのマークとしては、この元のデータで使用されない記号のうち"!"を使うことにする。
・プログラムリスト
Private Sub cmdHenkan_Click() '変換処理の呼び出し txtAto.Text = MailHenkan(txtMoto.Text) End Sub Private Function MailHenkan(moto As String) As String Dim n As Integer, ca1 As String, cb1 As String * 1 Dim ato As String moto = moto & "!" 'データの終わりのマーク(!)を追加 ato = "" '変換後のデータ用クリア n = 1 Do cb1 = Mid(moto, n, 1) '1文字取り出し If cb1 = "!" Then 'データ終わり Exit Do 'ループを抜ける ElseIf cb1 = "&" Then '区切り ca1 = vbCrLf '改行文字 ElseIf cb1 = "+" Then '空白 ca1 = " " '空白文字 Else 'その他 ca1 = cb1 '英数字 End If n = n + 1 '次の文字 ato = ato & ca1 'データ追加 Loop MailHenkan = ato '返却値の設定 End Function
宣言の型でString * 1という部分がある。これば、文字長を指定している。変数cb1には変換前の1文字だけを記憶させるのでこのように宣言している(メモリの節約)。もちろん"* 1"を省略しても問題はない。
1文字ずつデータを取り出すのに、関数Midを使用して変数cb1に記憶させている。If文で判定して、変換後の文字を変数ca1に記憶させている。判定後、取り出す文字の場所nを1加算して、変換後の文字を変数atoに追加している。
記号"&"の部分で改行されている。行の先頭に項目名Name, Kansou, Ikenがきている。記号"+"は空白に変換され、次の文字からが次の行に表示されているが、これはテキストボックスのプロポーショナル機能のためで実際には連続している。試しに、最後の行以外の適当な位置に空白を入力すると以降の文字が次の行に移動する。
Copyright © 2001 Hiroshi Masuda |