0

私のクラスの 1 つで、小さな暗号化プログラムを作成する必要があります。私のプログラムには、frmMenu、frmEncodage、frmChiffrement の 3 つのフォームがあります。プログラムが起動すると、Menu フォームがポップアップします。その後、2 種類の暗号化から選択できる ComboBox があります。選択したら、ボタンを押して開始します。悲しいことに、暗号化フォーム (frmEncodage) の 1 つをコーディングし終えたとき、メニューでフォームを選択したときに、プログラムでそのフォームを開くことができませんでした。エラーが表示されました:「フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。エラー: 文字列 "a" から型 'Integer' への変換が無効です。」

修正方法がわかりません。あなたの助けが必要です。私の frmMenu のコードは次のとおりです。

Private Sub btnDebuter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDebuter.Click
    If cbxMenuChoix.Text = "Rotation" Then
        Me.Hide()
        frmEncodage.Show()
    ElseIf cbxMenuChoix.Text = "Chiffrement par substitution" Then
        Me.Hide()
        FrmChiffrement.Show()
    Else
        MessageBox.Show("Veuillez entrer un choix d'encodage")
    End If
End Sub

これは frmEncodage のコードです。

Dim boEncodageNeg, boMajuscule As Boolean
Dim inDecalage As Integer
Dim inProfondeur As Integer
Dim tbValeurLettre() As Integer = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
Dim byValeurFinal As Byte
Dim stInput, stLettre, stChaine As String
Dim inLettreNum As Integer


Private Sub btnRotRetour_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRotRetour.Click
    Me.Hide()
    frmMenu.Show()
End Sub

Private Sub btnRotAide_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRotAide.Click
End Sub

Private Sub btnRot13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRot13.Click

End Sub
Private Sub btnRotChiffrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRotChiffrer.Click
    stInput = rtbRotInput.Text
    For i = 1 To stInput.Length - 1
        For ii = 0 To inProfondeur
            If ii = 0 Then
                stLettre = stInput.Chars(i)
            End If
            If stLettre = stLettre.ToUpper Then
                boMajuscule = True
            Else
                boMajuscule = False
            End If
            stLettre.ToLower()
            For iii = 0 To tbValeurLettre.Length - 1
                If stLettre = tbValeurLettre(iii) Then
                    inLettreNum = iii
                End If
            Next
            byValeurFinal = inDecalage + inLettreNum
            If byValeurFinal > 25 Then
                byValeurFinal = byValeurFinal - 25
            End If
            stLettre = tbValeurLettre(byValeurFinal)
        Next
        stChaine &= stLettre
    Next
    rtbRotOutput.Text = stChaine
End Sub
Private Sub btnRotDechiffrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRotDechiffrer.Click

End Sub
4

1 に答える 1

0

問題は次の行です。

Dim tbValeurLettre() As Integer = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}

コンピューターに s の配列を作成するように指示しますが、IntegerそれをStrings (引用符で囲まれたテキスト) で埋めます。などと書いて s に変換できるsを作成"a"Cします。"b"CCharInteger

于 2013-11-09T18:17:20.320 に答える