|
>処理の注釈など入れていただければありがたいのですが・・・
確かに説明もなくコードだけで申し訳なかったのですが、
>>>関数(NOTモジュール)を作ろうと思うのですがなかなか案が浮かばず
との事でしたので、基本的な関数は作成できる方だと判断していますので、
実質3行のプログラムなんですが...
Sample1は文字列を1バイトずつ(1文字ずつではない)切り出して、そのコードを求め
NOT演算後、また文字列の同じ位置に戻す作業を文字列のバイト数分繰り返しています。
>Function Sample1(s As String) As String
> Dim ss As String '作業用
> Dim i As Long 'ループカウンタ
> ss = s
'文字列のバイト数分ループする
> For i = 1 To LenB(ss) '←LenB(s)になっていたけどこのほうが良いですね
'文字列のiバイト目の文字コードをNOT演算した文字にする
> MidB$(ss, i, 1) = ChrB$(Not AscB(MidB$(ss, i, 1)))
> Next
'返り値のセット
> Sample1 = ss
>End Function
Sample2はByte型の動的配列に文字列を代入できることを利用して、配列の要素ごとに
NOT演算後、文字列に戻しています。
>Function Sample2(s As String) As String
> Dim b() As Byte '作業用バイト配列
> Dim i As Long 'ループカウンタ
'文字列(引数)をByte配列に代入
> b = s
'Byte配列の最小要素〜最大要素についてループ
> For i = LBound(b) To UBound(b)
'各要素のNOT演算
> b(i) = Not b(i)
> Next
'返り値のセット(Byte配列を文字列に戻す)
> Sample2 = b
>End Function
使用している関数の詳細についてはヘルプ等でご確認ください。
|
|