Macromedia Director非公式テクニカルノート ストリングのバイト数を調べる
Platform: All 1. テキストキャストメンバーのbyteプロパティ Director 7以降には、ストリングのバイト数を調べる関数はありません。ただ、テキストキャストメンバーのチャンク式については、'byte'プロパティでバイト数を調べることができます (Macromediaテクニカルノート[DR016119]「Director 7以降で文字列のバイト数を調べる」)。これを利用すれば、バイト数を返すユーザー定義関数を書くことができます。 2. バイト数を返すカスタム関数 [メッセージウィンドウでのテスト] -- [バイト数を返すカスタム関数] コメントにつけた番号にしたがって解説します。 [1] 最初に、渡されたパラメータが文字列かどうかを判定します。文字列でなければ'void'を返します。したがって、この関数ハンドラには必ず文字列をパラメータとして指定する必要があります。 [2] 'byte'を使うには、テキストキャストメンバーが必要です。テキストキャストメンバーは、関数の2番目のパラメータとして指定します。 ただし、このパラメータはオプションとしました。テキストキャストメンバーの指定がない場合は新規にキャストメンバーを作成します。作成したテキストキャストメンバーは、変数myMemberに格納します。 このテキストキャストメンバーは、スクリプトの終了前に削除します。そのため、キャストメンバーを削除する必要があるということを、変数bEraseMemberを'true'とすることで、設定します。 2番目のパラメータが指定されていれば、そのタイプ判定を行います。テキストキャストメンバーでなければ、やはり新たにキャストメンバーを作成し、myMemberに格納、変数bEraseMemberを'true'に設定します。パラメータがテキストキャストメンバーなら、そのテキストキャストメンバーをmyMemberに格納します。変数bEraseMemberは設定していないので、値を調べれば'void'になります。 [3] 文字列をテキストキャストメンバーmyMemberに入れて、そのバイト数を調べます。まず、渡された文字列sString全体の長さをnLengthに格納します。つぎに、渡された文字列sStringをmyMemberのテキストに設定します。そして、'byte'と関数'count'を使って、文字列全体のバイト数を取得し、値をnBytesに格納します。 [4] テキストキャストメンバーを新規に作成して、bEraseMemberが'true'に設定されていれば、作成したmyMemberを削除します。最後に、取得した値nBytesを返します。 _____ 作成者: 野中文雄 © 2001 and beyond Fumio Nonaka All rights reserved. |
|||