• ベストアンサー

文字列を配列に…。

VBはまだ始めたばかりで本当に初歩的なことかもしれませんが分かる方がおられたら是非教えて下さい。 text1.textから取り込んだ文字列を”一文字ずつ”(Dim a(100) as stringで宣言した)配列に格納したいのですがどうしたらいいのでしょうか?? <例>text1.textに"abc"と入力しcommandbuttonを押すとa(0)に"a"がa(1)に"b"がa(2)に"c"が格納されるといったかんじです。 ちなみに今私がしたいのはtext1.textに、ある文字列を入れその文字列を文字コードに変換しそれを一文字分ずつ+1してまたそのコードを文字に直しtext2.textに出力するというものです(ようは簡単な暗号化ですね)。 私はAscとChrコマンドを利用して1文字ずつコードをずらしていこうと思っているのですが、他に良い方法などあるのでしょうか?? 本当に初心者でどのようにしらたよいのか分かりません…。 どなたか分かりやすく教えていただけませんでしょうか?? お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

for i = 1 to len(text1.text) a(i-1)=mid(text1.text),i,1) if c="\" then cnt=cnt+1 next i mid関数を使って1文字ずつとりだしてます。 1つずつa(i)にはいっていくはずです。 初心者ということでしたのでlen関数も説明しておきます。 len関数は文字数の数を返します。全角半角は問いません。 でアスキーコードを1ずらすには a(i)=chr(asc(a(i))+1) こんなんでどうでしょうか? あとは連結させるだけです。

ryuji0202
質問者

お礼

初心者の私でも十分に理解できるほど分かりやすく教えていただきありがとうございました! さっそく試してみたいと思います!

その他の回答 (1)

  • josyo_m
  • ベストアンサー率63% (28/44)
回答No.1

お疲れ様です。 下記のような例はどうでしょうか? バイト型の配列は文字と同じように使うことが出来ます。 バイト型の配列に文字のコードを入れてコードを+1しています。 そして最後に文字型に入れています。 復号化はその逆に-1しているだけです。 例) Private Sub Command1_Click()   Dim str As String   Dim arr() As Byte   Dim i As Long   str = "abc"   '// 暗号化   '// バイト型の配列に文字コードを代入   arr = StrConv(str, vbFromUnicode)   For i = LBound(arr) To UBound(arr)          '// コードを+1     arr(i) = arr(i) + 1   Next i   '// 文字型に戻す   str = StrConv(arr, vbUnicode)   Debug.Print str   '// 復号化   '// バイト型の配列に文字コードを代入   arr = StrConv(str, vbFromUnicode)   For i = LBound(arr) To UBound(arr)     '// コードを-1     arr(i) = arr(i) - 1   Next i   '// 文字型に戻す   str = StrConv(arr, vbUnicode)   Debug.Print str End Sub 間違っていたらごめんなさい。

ryuji0202
質問者

お礼

間違っていたらごめんなさいなんてとんでもないっ! とても丁寧なプログラムを教えていただきありがとうございました! さっそく試してみたいと思います。

関連するQ&A