V4で書いた,BASE64のENCODE/DECODEのサンプルプログラムです。DLLを作ってみました。詳細は,こちらをご覧下さい。INDEX利用方法BASE64サンプルコード注意書きこのサンプルコードの使い方このサンプルコードは,BASE64のENCODE/DECODEを行います。それぞれのコード変換を行うTOP関数は,base64encode/base64decodeになります。受信したメールの変換を行う場合には,Base64Get/Base64Putのような前処理が必要になるでしょう。String)与えられたデータ列(Bstr())とデータ長(Blen)を,base64の規約に従って6bitのASCII文字列(B64str)に変換します。Long)base64の規約に従って変換された6bitのASCII文字列(B64str)を復元して,データ列(Bstr())とデータ長(BCnt)を返します。Boolean指定されたファイル名(Fname)を添付ファイル(Base64形式)として送信可能な形式にして,メールの本体のテキスト(inMailData)に付加してメール送信用のバッファオブジェクト(MailBody)のテキストプロパティに格納する。メール送信用のバッファオブジェクトは,RichTextObjectとすること。この関数の実行結果は,True(データ作成成功)/False(失敗)で返されます。Booleanメールとして受信した受信文字列(Cmd1)の添付ファイルを,指定したディレクトリ(OptionDir)に展開する。展開された結果は,RichTextObjectのTextプロパティ(AnswerBody.Text)として得られます。この関数の実行結果は,True(ファイル作成成功)/False(失敗)で返されます。BASE64サンプルコード('lib_base64.bas')ICPのテスト用に作成したBASE64用のENCODE/DECODEライブラリです。H.Yokomizo'-----------------------------------------------------''-----------------------------------------------------'ここはコメントを外して使って下さい。Data'----------------------------------------------------------------'Base64の符号化は,3バイト(24bit)のバイナリデータを6bit単位の'4つのデータに分割して,それを0-63(A-Z,a-z,0-9,+,/,[=])を表現'する文字列に割り付けることで行う。4'データの最終端には"="を付けることがある。'これはデータが24bitの途中で終わったことを示し,'(8bit:2,16bit:1,24bit:0)の"="を付加する。'変換されたデータは,1行最大76byteの文字列となる。'Base64の符号化は,元データから約33%大きくなる。1993'"http://www.cis.ohio-state.edu/htbin/rfc/rfc1521.html"'を参照のこと。システムに制御を渡します。Length'----------------------------------------------------------------'Base64のASCII文字列(A-Z,a-z,0-9,+,/,[=])をバイナリデータに戻す。'変換を行うために必要な配列を確保すること。システムに制御を渡します。添付ファイルの作成'指定されたファイルを添付ファイル(Base64形式)として'送信可能な形式に格納する。'未使用のファイル番号を取得します。'ファイルを開きます。""ならばメールのディレクトリを使う。ここで指定したディレクトリを使う。複数の添付ファイルには対応していません!。一応AnswerBodyのTextプロパティがCmd1と同じでも大丈夫なはず!。未使用のファイル番号を取得します。(0-63)'文字列長が1でないときは255を返す。'Base64対象文字以外は255を返す。Boolean'-------------------------------------------------'文字列を改行コードで分けて返す。False=改行コード無,True=分割成功'改行のみの場合,Str2は長さ0の文字列となる。String'----------------------------------------------------------'文字列を特定文字(vbCrLf,",",etc)で分けて返す。Function注意書きVBを使う上での一般常識の無さはご勘弁下さい(なにせ日曜プログラマなもので)。苦情も受け付けていますが,できれば「こうしたら上達するよっ」といった点を指摘していただけるとありがたいです。バグリポートについては,この場に掲載させていただくことをご了承下さい。サンプルコードへの反映については,将来的に対応するかもしれません,ということにさせて下さい。VB4で大容量の文字処理を行うことは実行時間上無理があることを実感したので,特にバージョンアップ等は考えていません。このコードを用いて,WinBiffおよび電信8号との添付ファイルの送受信テストは,特に問題ありませんでした。以下の項目については,若干から非常に...の間で怪しい場合があります。32KBを越える添付ファイルのENCODE/DECODEASCII"8.3"形式以外を添付ファイル名とした場合とにかく異常処理全般サンプルコードの関数のコメント内に"+","-"とあるのは,引数がその関数に対してIN("+")あるいはOUT("-")のデータを持つことを示します。(もちろん関数の戻り値(Return)はOUT("-")になります)本来ならByRef,ByVal等を付けた方が良かったと思いますが,昔からのクセで使ってますのでご了解下さい。