Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для Евстефеич
17 / 17 / 2
Регистрация: 11.03.2014
Сообщений: 48
.NET 4.x

Индекс вне границ массива при дешифровке данных

12.03.2014, 15:00. Показов 2247. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова здравствуйте! На форуме Памирыч выкладывал код программы для тестирования, я немного его переработал. Необходимо прикрутить дешифрование. Если конкретнее, вчера я задавал вопрос в топике "шифрование на этапе записи в файл", решение нашлось. Сейчас нужно разобраться с дешифрованием. Вот код:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Public Class Form1
    Dim Key As Byte() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} 'Ключ
    Dim IV As Byte() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} 'Вектор инициализации 
    Dim Коллекция As New Collection
    Dim Q() As String
    Dim Ответ() As String
    Dim ТекПоз As Integer
    Dim Прав As Integer = 0
    Dim Ошиб As Integer = 0
    Public Function Decrypt(ByVal fName As String)
        Dim txt As String = ""
        Dim RMCrypto As New Security.Cryptography.RijndaelManaged
        Dim fs As New IO.FileStream(fName, IO.FileMode.Open)
        Dim CryptStream As New Security.Cryptography.CryptoStream(fs, RMCrypto.CreateDecryptor(Key, IV), Security.Cryptography.CryptoStreamMode.Read)
        Dim SReader As New IO.StreamReader(CryptStream)
        txt = SReader.ReadToEnd()
        SReader.Close()
        fs.Close()
        CryptStream.Close()
        Return txt
    End Function
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        OpenFileDialog1.ShowDialog()
 
 
        Q = IO.File.ReadAllLines(OpenFileDialog1.FileName, System.Text.Encoding.Default)
        Q = Split(Decrypt(OpenFileDialog1.FileName), "'")
        For I As Integer = 0 To Q.Length - 1
            Коллекция.Add(Q(I))
        Next
        Randomize()
        NextQ()
    End Sub
    Sub NextQ()
        If Коллекция.Count > 0 Then
            ТекПоз = Rnd() * (Коллекция.Count - 1) + 1
            Ответ = Split(Коллекция(ТекПоз), "'")
            Label1.Text = Ответ(0)
            CheckBox1.Text = Ответ(1) : CheckBox2.Text = Ответ(2) : CheckBox3.Text = Ответ(3) : CheckBox4.Text = Ответ(4)
        Else
            MsgBox("Тест окончен" & vbCrLf & "Правильных ответов: " & Прав & vbCrLf & "Ошибок: " & Ошиб, MsgBoxStyle.Exclamation)
            Close()
        End If
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Rght As Boolean = True
        If Button1.Text = "Ответить" Then
            For I As Integer = 1 To 4
                If Not Strings.Mid(Ответ(5), I, 1) = CType(Me.Controls("CheckBox" & I), CheckBox).Checked Then
                    Me.Controls("CheckBox" & I).ForeColor = Color.Red
                    Rght = False
                Else : Me.Controls("CheckBox" & I).ForeColor = Color.Green
                End If
            Next
            Коллекция.Remove(ТекПоз)
            Button1.Text = "ОК и далее >>"
            If Rght = True Then
                Прав += 1
            Else
                Ошиб += 1
            End If
        Else
            ClearCh()
            NextQ()
            Button1.Text = "Ответить"
        End If
    End Sub
    Sub ClearCh()
        For I As Integer = 1 To 4
            CType(Me.Controls("CheckBox" & I), CheckBox).Checked = False
            CType(Me.Controls("CheckBox" & I), CheckBox).ForeColor = Color.Black
        Next
    End Sub
End Class
На 39 строке при загрузке в программу зашифрованного файла вылетает "Индекс находился вне границ массива". Прошу помочь разобраться!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2014, 15:00
Ответы с готовыми решениями:

Ошибка "Индекс вне границ массива" при остановке процесса
Добрый день. Есть форма на ней кнопка, при нажатии на кнопку должен остановиться процесс, всё бы ничего, вот только при остановке...

Индекс находился вне границ массива
Доброго времени суток форумчане ломаю голову в чём может быть причина Dim Имя процесса As New Process Имя процесса =...

Индекс вне границ массива при работе с матрицей
Добрый день. Не могу понять как оформить двухмерный массив, чтобы индекс не улетал. Помогите, пожалуйста. public double getData(int...

24
 Аватар для Евстефеич
17 / 17 / 2
Регистрация: 11.03.2014
Сообщений: 48
13.03.2014, 11:35  [ТС]
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Памирыч Посмотреть сообщение
Вот еще
VB.NET
1
2
3
For I As Integer = 0 To q.Length - 1
If Q(I) <> "" Then Коллекция.Add(Q(I))
Next
То есть если и-тый элемент массива Q пустой (не представляет собой строку), он в коллекцию не добавится? я правильно вас понял?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9165 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
13.03.2014, 11:37
Евстефеич, правильно
1
 Аватар для Евстефеич
17 / 17 / 2
Регистрация: 11.03.2014
Сообщений: 48
13.03.2014, 11:46  [ТС]
Памирыч, как по мне - элегантное решение Спасибо, все работает

Добавлено через 2 минуты
Цитата Сообщение от Памирыч Посмотреть сообщение
Вообще, можно завести коллекцию, и добавлять в нее вопросы, а не просто в строку.
Но коллекция - есть коллекция, нам-то нужна строка для шифрования.
Вот пример, как коллекцию преобразовать в строку
VB.NET
1
2
3
4
5
Dim Col As New List(Of String)
     Col.Add("String1")
     Col.Add("String2")
     Col.Add("ThirdString")
     MsgBox(Join(Col.ToArray, vbCrLf))
так, из любопытства, не могли бы пояснить? особенно зачем мэсадж бокс?
0
Почетный модератор
 Аватар для Памирыч
23251 / 9165 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
13.03.2014, 12:00
Евстефеич, при цитировании теги тоже нужны. А лучше вообще не цитировать.

Пояснить можно так. Col - это коллекция, массив. Он удобен тем, что в него без проблем можно добавлять новые элементы и удалять их. Полезно, когда не знаешь, сколько элементов в нем будет.
Добавляем в него строки.

Но это все еще массив, и его нельзя вывести ни в TextBox, ни в MsgBox, это как-никак коллекция, привести к строке ее так просто нельзя.

Чтобы это сделать, используем Join. Он соединяет элементы коллекции в одну строку. В том примере VbCrLf -это то, что будет между элементами коллекции после преобразования. Нам просто нужны переносы строк, поэтому написали VbCrLf. Были бы нужны например пробелы, написали бы " "
Тогда коллекция выстроилась бы в одну строчку, а между элементами был пробел.

MsgBox использован в доказательство, что теперь коллекция приведена к String
0
 Аватар для Евстефеич
17 / 17 / 2
Регистрация: 11.03.2014
Сообщений: 48
13.03.2014, 12:05  [ТС]
Памирыч, спасибо, я все понял! Возьму на заметку!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2014, 12:05

Индекс находился вне границ массива при вызове args
Написал вот такой код: static void Main(string args) { var Path = args; var Filter = args; ...

Индекс находился вне границ массива при работе с массивами
Добрый вечер! Застрял на такой вот замечательной ошибке...Подскажите, где накасячил! using System; using System.Collections.Generic;...

Программа получения данных с GPS датчика. Индекс находился вне границ массива
Здравствуйте. Пишу программу получения данных с GPS датчика, и столкнулся с такой проблемой - в коде приведенном ниже выдает ошибку...

Индекс находился вне границ массива при загрузке элементов из Datagridview
Загружаю элементы из datagridview в массив таким вот способом, и вылетает error &quot;Индекс находился вне границ массива&quot;. Не могу понять...

Индекс находился вне границ массива в List при параллельных вычислениях
BudgetReport reportOldState = GetBudgetReport(this.Id); List&lt;BudgetReportElement&gt; updatedElements = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ По ссылке 403. Не очень информативно такую ссылку постить. Запись от Usaga размещена Сегодня в 06:46 . . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru