Visual Studio 2003で文字を反転させるプログラムが正しく動かない

このQ&Aのポイント
  • Visual Studio 2003を使用して、文字を反転させるプログラムを作成していますが、正しく動作しません。
  • 入力された文字が一文字置きに表示されてしまいます。
  • 正しく表示させるためにはどのような修正が必要でしょうか?
回答を見る
  • ベストアンサー

Visual Sutudio 2003で、文字を反転させるプログラムが正しく動きません。

Visual Sutudio 2003で、困っています。 TextBox1に、文字を入力してButton1をクリックすると、入力された文字が反転されてLabel3に、表示されるプログラムを作ってみたのですが、上手く動きません。 例えば、「TextBox1」と入力してボタンをクリックすると、「1xoBtxeT」と表示させたいのですが、「1ote」と一文字置きに表示されてしまいます。 「Button1をクリックした時のプログラム」 Dim moji, kekka As String Dim i As Integer Label3.Text = "" moji = TextBox1.Text Label3.Text = moji.Substring(moji.Length - 1, 1) For i = 2 To moji.Length  Label3.Text &= moji.Substring(moji.Length - i, 1)  i = i + 1 Next End Sub 正しく表示させるには、どうすればいいのでしょうか?分かる方、宜しくお願いします。

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

  • ベストアンサー
回答No.1

For i = 2 To moji.Length  Label3.Text &= moji.Substring(moji.Length - i, 1)  i = i + 1 Next FORでi=2から+1して行くのに、さらにループ中で 「i = i + 1」してしまっているからでしょうね。 この文を削除すればいいと思いますけど?

husigikazetukai
質問者

お礼

「i = i + 1」が、原因だったのですか。無事解決いたしました。ご回答ありがとうございました。

関連するQ&A

  • VB2010 コードの意味を教えてほしいです。

    VB2010を使って、基礎から勉強中です。 テキストに紹介してあるサンプルプログラムを作っているところですが、 どうしても、わからないところがあります。 乱数を発生させ、こんばんはという文字を、5つのボタンにランダムに表示させて ボタンをクリックして、なんという言葉か当てるゲームです。 その中で、For ~ Nextの中に入力されている内容の意味を 詳しく知りたいです。よろしくお願いします。 Public Class Form1 Private answer As String = "こんばんは" '答え Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '答えを文字列の配列に変換 Dim moji() As Char = answer.ToCharArray() '文字入れ替え Dim rnd As New Random() '乱数を発生させる For i As Integer = 1 To 10 Dim n1 As Integer = rnd.Next(5) Dim n2 As Integer = rnd.Next(5) Dim m As Char = moji(n1) moji(n1) = moji(n2) moji(n2) = m Next Button1.Text = moji(0) Button2.Text = moji(1) Button3.Text = moji(2) Button4.Text = moji(3) Button5.Text = moji(4) '回答欄を初期化 Label2.Text = "" End Sub Private Sub btns_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click Dim btn As Button = CType(sender, Button) Label2.Text &= btn.Text btn.Visible = False If Label2.Text = answer Then MsgBox("おめでとう", 0, "正解") ElseIf Label2.Text.Length >= answer.Length Then MsgBox("残念!", 0, "不正解") End If

  • Formの間に値を渡すことについて

    素人の質問が以下のとおりです。 【Form1の設置:】 TextBox1 Button1 【Form2の設置:】 Label1 【要求:】 1. Form1のTextBox1に値(文字)を入力して、Button1をクリックすれば 2. Form2のLabel1からTextBox1に入力された値(文字)を表示される。   要するFormの間に値を渡すことです。 もちろん、ネットでも調べましたが、説明されたことをよくわからなかったのでシンプルなコードが頂きたいです。 自分が作ったNGものもアップします。 ------------------Form1内に記載した内容------------- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim tmpMsg As String tmpMsg = TextBox1.text   Dim frmFrom1 As New Form1 frmFrom1.Show(tmpMsg) End Sub ---------------------------------------------------- ------------------Form2内に記載した内容------------- Public Class Form3 Private Sub Form2_Load(ByRef tmpMsg As String) Label1.Text = tmpmsg End Sub End Class ---------------------------------------------------- 結果として、エラーがなかったが、label1に何も表示されなかったです。 宜しくお願い致します。^@^

  • VBで倍数を出したい

    VBで倍数を出したい よろしくお願いします。 おそらく基本なんだと思うのですが、さっぱりわかりません。 TextBox Label Buttonと並んでいて、 TextBoxに入った整数に対し、 Buttonを1度押すたびに、 Labelに倍数が表記されていく、 という趣旨なのですが。 まず、前段階として下記を作らされました。 Public Class Form1 Dim i As Integer Dim m As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click i = TextBox1.Text lblmessage.Text = i + m m = lblmessage.Text End Sub End Class このように、labelの数字がどんどん変わっていくのはできたのですが、問題は、 Text…10 Label…10    20    30    40    50    60    70    80    90    100 となり、しかも一度に出るのではなく、Buttonひと押しにつき一つの解が出ね 次の一押しで改行され解が出る。 かつ、100で打ち止めにすること…だそうです。 いちおうめちゃくちゃですが、みんな風に作りました。 Public Class Form1 Dim a As Integer Dim b As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim b As Integer = 10 a = TextBox1.Text lblMessage.Text = a & ControlChars.CrLf & a + b End Sub End Class どうかヒントだけでもお願いします。

  • 順列のプログラムについて(VB)

    下記が、組み合わせを求めるプログラムです。 これのどこを変更すれば、順列を列挙するプログラムになりますか(ただし、重複順列でない。例、5P2=5*4=20通り)?教えていただけませんか? Public Class Form1 Dim w0, w1, count As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Text = "コンビネーションサーチ" Label1.Text = "個の中から" Label2.Text = "個とる組リスト" Button1.Text = "計算" TextBox1.Text = "6" TextBox2.Text = "3" TextBox3.Text = "" TextBox3.ScrollBars = ScrollBars.Vertical count = 0 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim n, m As Integer n = TextBox1.Text m = TextBox2.Text w1 = " }" w0 = "{ " TextBox3.Text = "" count = 0 combisearch(1, n, m) MsgBox("組み合わせ個数は、" & count & "個です。") End Sub Sub combisearch(ByVal st, ByVal ed, ByVal depth) Dim i, temp If depth - 1 < 1 Then For i = st To ed TextBox3.Text &= w0 & i & w1 & vbCrLf count += 1 Next Else For i = st To ed temp = w0 w0 &= i & " " combisearch(i + 1, ed, depth - 1) w0 = temp Next End If End Sub End Class

  • visual basic 2010 の デザイン

    visual basic 2010で、ボタンをクリックしただけ数が増えるように作ったんですけど、 9から10に切り替わるときに、位がずれてしまいます。 分かりやすくするため、*をつけると、**9*→**10 これを、***9→**10 こうなるようにしたいんです。 どうやったらできますか??? ============================================================ Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim kazu As Long kazu = Label1.Text Label1.Text = kazu + 1 End Sub End Class

  • コントロール配列について、基礎で躓いています。

    Visual Basic 2010でプログラムを作成しています。 今、ラベルが約30個フォームに貼ってあり、そのtextをすべてtextbox1のtextに変更されるようにしたいと考えています。 Label1.text = Textbox1.text Label2.text = Textbox1.text としていけば確実なのでしょうが、簡素化したいのです。 いろいろと検索して心身ともに消耗しきったため、最後の綱として質問させていただきました。 たとえばtextbox1のコードとして Dim btn(30) As Button For i = 1 To 30 btn(i) = Me.Controls("Button" & CStr(i + 1)) btn(i).Text = CStr(i + 1) Next i と書きいれるとNullReferenceExceptionというエラーが出てきてしまいます。 何か書き足りないのでしょうか。何卒よろしくお願いします。

  • 日本語文字列の比較

    複数行のテキストボックスから日本語の文字を拾い出して 入力された文字と比較しようとしているのですが、 矢印の部分で、エラーが出て上手く処理ができません アドバイスをいただけないでしょうか Dim str As String   For i = 0 To TextBox1.Lines.Length → str = CStr(TextBox1.Lines(i + 1))        ・        ・        ・

  • 文字の判定について質問です

    Visual Basicについての質問です。 私は、"Textbox1"に"gakuban"で宣言した文字を入力すると、"Textbox2"に"simei"で宣言した名前を表示させ、それ以外の文字が入力されたらメッセージボックスで"違います"が表示されるプログラムを作りたいと思い、下のようなプログラムを組みました。しかしこれだと、"Textbox1"に文字を1文字入力するたびに"違います"のメッセージボックスが表示されてしまいます。これを直したいのですが、どのようにプログラムを直せばいいのか分かりません。なので、この下のプログラムをどう直せばいいのか教えていただけないでしょうか? Public Class Form1 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged Dim gakuban() As String = {"H05001", "H05002", "H05004", "H06007", "H05009"} Dim simei() = {"一郎", "次郎", "三郎", "四郎", "五郎"} Dim i As Integer i = (Array.IndexOf(gakuban, TextBox1.Text)) If i >= 0 Then TextBox2.Text = simei(i) Else MessageBox.Show("違います") End If End Sub End Class

  • VBのテキスト書き込み読み出し

    VB初心者です。 VBのテキスト書き込み読み出しについて質問させていただきます。 ~使用オブジェクト~ textbox1 textbox2 button1 button2 現在下記の通りtextbox1とtextbox2に書いた文字(length 10まで)をbutton1 clickで C:\test.txtに書き出し、 button2 clickでtextbox1 と textbox2に戻すプログラムを書いてみました。 読み込みのところが現在は2個ですが、実用的には膨大な数にしたいと思っています。 単純に沢山書けばいいのでしょうが現実的ではないのでスッキリと書く書き方はないでしょうか? さらに、例としてtextbox1にAさんの名前textbox2にAさんの年齢をいれたとします。 その際、Bさん以降を登録したいのですがその場合テキストへの書き込みを次行に書き込み 次行を読み込むにはどのように書けばよろしいでしょうか? ご教授お願い致します。 Public Class Form1 '##################################################### '"C:\test.txt"へ書き込み '##################################################### Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim write_data As New System.IO.StreamWriter("C:\test.txt", False, _ System.Text.Encoding.Default) Dim str As String Dim str1 As String str = String.Format("{0, -10}", TextBox1.Text) str1 = String.Format("{0, -10}", TextBox2.Text) write_data.Write(str & str1) write_data.Close() End Sub '##################################################### '"C:\test.txt"の読み込み '##################################################### Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim Reader As New IO.StreamReader("C:\test.txt", System.Text.Encoding.GetEncoding("Shift-JIS")) While Reader.Peek() > -1 '10文字取得 Dim c(9) As Char Dim d(9) As Char Reader.ReadBlock(c, 0, c.Length) Reader.ReadBlock(d, 0, d.Length) TextBox1.Text = c TextBox2.Text = d End While Reader.Close() End Sub End Class

  • VBのプログラムの質問です。

    VBのプログラムの質問です。 100点満点のテストで10人分の点数を一次元配列で読み込み、各人の偏差値を含めて表示するプログラムを作りなさい。 知恵袋で一度同じような質問をしましたが、似たようなエラーが出てきてしまうために 今一度力をお貸しください、 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim n As Integer = CInt(TextBox3.Text)  ←ここ Dim p(n) As Integer 'データの取得と平均計算 Dim s As Double = 0 For i As Integer = 0 To n - 1 p(i) = CInt(TextBox1.Lines(i)) s = s + p(i) Next Dim m As Double = s / n '標準偏差の計算 Dim sx As Double = 0 For i As Integer = 0 To n - 1 sx = sx + (p(i) - m) ^ 2 Next Dim sd As Double = (sx / n) ^ (1 / 2) '偏差値の表示 For i As Integer = 0 To n - 1 Dim dv As Double = 50 + 10 * (p(i) - m) / sd TextBox2.Text = TextBox2.Text & Format(dv, "##.#0") & vbCrLf Next End Sub String "" から型 'Integer' への変換は無効です。 と Dim n As Integer = CInt(TextBox3.Text)からでてしまいます。 詳しい方よろしくお願いします

専門家に質問してみよう