Member 13491139 Ответов: 2

Как получить доступ к массиву in VB.NET чтобы получить текст из текстового файла


У меня есть фрагмент текста, в котором есть список фильмов Оскара с 1928 по 2014 год. Я использую массив, чтобы найти название фильма и поместить его в одно текстовое поле, а жанр-в другое. Жанр находится рядом с названием фильма. Я пытаюсь получить доступ к ним по отдельности и поместить их в два разных текстовых поля.

Что я уже пробовал:

Тусклый МВС(86) как фильм

Частная Суб FrmAcademy_Load() Обрабатывает Ключевое Слово Mybase.Загрузить
Тусклый мвилин как струна
Dim mviData(1) в виде строки
Dim allMovies() As String = IO.File.ReadAllLines("Oscars.txt")
Для mviList As Integer = от 0 до 86
mviLine = allMovies(mviList)
mviData = mviLine.Split(","c)
mvs(mviList).mviName = mviData(0)
mvs(mviList).gnrName = mviData(1)
Dim mviYear как целое число = 0
Dim mviIndex как целое число = 0
If (IsNumeric(txtAwards.Текст)) = True Тогда
mviYear = CInt(txtAwards.Текст)
Конец, Если
Если (mviYear >= 1928) или (mviYear <= 2014), то
mviIndex = 1928 - mviYear
txtFilm.Текст = МВС(mviIndex).mviName
txtGenre.Текст = МВС(mviIndex).mviName
Конец, Если
Следующий
Конец Подводной Лодки

Private Sub btnPicture_Click(sender As Object, e As EventArgs) обрабатывает btnPicture.Щелчок
If (IsNumeric(txtAwards.Текст)) = False Тогда
Ящик для сообщений.Show("пожалуйста, введите год в качестве числового значения")
Ключевые слова elseif Кинт(txtAwards.Текст) > 2014 затем
Ящик для сообщений.Шоу("Пожалуйста, выберите год в диапазоне")
Ключевые слова elseif Кинт(txtAwards.Текст) < 1928 затем
Ящик для сообщений.Шоу("Пожалуйста, выберите год в диапазоне")
Конец, Если

Patrice T

Опишите вашу проблему.

Member 13491139

Я получаю сообщение об ошибке на МВС(mviIndex).mviName, что говорит о том, что индекс находится вне границ массива

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Richard Deeming

If (mviYear >= 1928) Or (mviYear <= 2014) Then

Я не уверен, что вы думаете, что это условие тестируется, но вы можете заменить его на: If True Then

Если только вы не можете предложить число, которое одновременно "меньше 1928 года" и "больше 2014 года"?

2 Ответов

Рейтинг:
2

Patrice T

Запустите отладчик и проверьте значение mviIndex, вы обнаружите, что это отрицательно.
Попробуй

mviIndex = mviYear - 1928


Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]
Visual Basic / Visual Studio Video Tutorial - Базовая Отладка - YouTube[^]
Visual Basic .NET programming for Beginners - точки останова и средства отладки[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
1

Richard MacCutchan

If (mviYear >= 1928) Or (mviYear <= 2014) Then
mviIndex = 1928 - mviYear

Это даст вам отрицательный индекс для любого года после 1928 года. И этот оператор в If заявление должно быть And нет Or