0

对于我的一个班级,我必须制作一个小型加密程序。在我的程序中,我有三种形式:frmMenu、frmEncodage、frmChiffrement。程序启动时,会弹出菜单表单。之后,有一个 ComboBox 可让您在两种加密类型之间进行选择。做出选择后,按下按钮即可开始。可悲的是,当我完成加密表单之一 (frmEncodage) 的编码后,当我在菜单中选择它时,我的程序不会让我打开它。弹出错误:“创建表单时出错。有关详细信息,请参阅 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 填充它(用引号括起来的文本片段)。写入"a"C"b"C来创建可以转换为Chars的s。Integer

于 2013-11-09T18:17:20.320 回答