Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147

Индекс находится вне границ массива

14.02.2020, 12:00. Показов 1895. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
  for (int i=0; i<text.Length; i++)
            {
                if(text[i].ToString()!=" ")
                {
 
                    //  sed[i] = Convert.ToByte(text[i].ToString());
                  
                        sed[i] = byte.Parse(text[i].ToString());
                    MessageBox.Show(sed[i].ToString());
                }
            }
в чем моя ошибка??
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2020, 12:00
Ответы с готовыми решениями:

Индекс находится вне границ массива
У меня есть обычный массив, его размер зависит от выбранного количества элементов в comboBox. При изменении количества изменяется и размер...

Индекс находится вне границ массива
Всем привет) решил написать шифратор задал переменные, написал все, а вылезает ошибка... помогите пожалуйста... и ругается на...

Индекс находится вне границ массива
Доброй ночи!!! пишу программу, много чего взял для программы с интернета, кое что свое добавил шифрует хорошо, а вот при дешифровании...

21
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
14.02.2020, 12:54
Цитата Сообщение от Davar Посмотреть сообщение
в чем моя ошибка??
Видимо размер sed меньше, чем text.
0
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147
14.02.2020, 12:57  [ТС]
chumich, sed пустой. и я его пытаюсь заполнить. пробовал писать += та же ошибка
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
14.02.2020, 13:38
Лучший ответ Сообщение было отмечено Davar как решение

Решение

Цитата Сообщение от Davar Посмотреть сообщение
sed пустой
Так он как задан изначально-то? Как-то так?
C#
1
byte[] sed = new byte [text.Length];
Размеры массивов должны совпадать. Хотя если Вы еще и пустые значения убираете, тогда лучше через коллекцию делать. Тот же List, например.

Добавлено через 5 минут
C#
1
List<byte> sed = new List <byte>();
А потом:
C#
1
sed.Add (byte.Parse(text[i].ToString()) // в 8-й строке
Добавлено через 20 минут
В итоге получится вроде этого:
C#
1
2
3
4
5
6
7
8
9
10
string text = textBox1.Text; // это так - для примера
List<byte> sed = new List<byte>();
for (int i = 0; i < text.Length; i++)
{
    if (text[i].ToString() != " ")
    {
        sed.Add(byte.Parse(text[i].ToString()));
    }
}
MessageBox.Show(sed.Count.ToString()); // вывод тоже для примера - чтобы было видно что работает
Если нужно, чтобы в результате был массив, из коллекции данные перекинуть туда не трудно.
0
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147
14.02.2020, 13:45  [ТС]
chumich using System;
C#
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
namespace FTnew
{
    class send
    {
        static public RichTextBox richT;
        static public byte[] sed ={ };
      static public byte[] ded = new byte[0];
        static public string  text;
        
 
  static  public   void sending() 
        {
            text = richT.Text;
            for (int i=0; i<text.Length; i++)
            {
                if(text[i].ToString()!=" ")
                {
 
                    //  sed[i] = Convert.ToByte(text[i].ToString());
                  
                        sed[i] = byte.Parse(text[i].ToString());
                    MessageBox.Show(sed[i].ToString());
                }
            }
 
 
        }
 
 
    }
}
полный код
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
14.02.2020, 14:15
Цитата Сообщение от Davar Посмотреть сообщение
static public byte[] sed ={ };
static public byte[] ded = new byte[0];
В этом и была проблема: в эти массивы с размером 0 ничего не добавить.
0
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147
14.02.2020, 14:24  [ТС]
Цитата Сообщение от chumich Посмотреть сообщение
В этом и была проблема: в эти массивы с размером 0 ничего не добавить.
их в лист надо сделать как ты показал?
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
14.02.2020, 14:30
Цитата Сообщение от Davar Посмотреть сообщение
их в лист надо сделать
Конечно - так проще. И добавлять потом сколько нужно как в коде написано методом Add().
0
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147
15.02.2020, 03:52  [ТС]
chumich, как можно сложить их? так?
C#
1
2
sed.Add(byte.Parse(text[i].ToString()));
                    ded[k] += sed.ToArray()[0];
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
15.02.2020, 08:22
Цитата Сообщение от Davar Посмотреть сообщение
можно сложить их?
Что значит сложить? Перенести данные из одного в другой? И что за ded? По тому коду, который я видел, он - пустой. Подробнее объясните. И если несложно покажите код, который на данный момент актуален.
0
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147
15.02.2020, 09:19  [ТС]
chumich, я хочу записать в индекс 1 массива все что вписывается в текст бокс до пробела как это можно сделать?

Добавлено через 10 минут
chumich, Давар,
вожу я например 00 и эти нули записываются в byte sed[0]
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
15.02.2020, 09:25
Цитата Сообщение от chumich Посмотреть сообщение
Подробнее объясните
Это называется подробно?
1) Какой массив первый? ded или sed?
2) В индекс? То есть внутрь квадратных скобок: []? Или в сам массив?
3) В текстбокс что-то вписывается без пробелов, потом появляется пробел и нужно взять всё, что было до него?
4) В последнем Вашем коде:
C#
1
2
sed.Add(byte.Parse(text[i].ToString()));
ded[k] += sed.ToArray()[0];
у ded индекс k - откуда он взялся? Там есть еще один цикл или как?
5) Весь "сыр-бор" с двумя списками для того, чтобы брать первую строку до пробела? Всё остальное, что Вы занесли в sed, потом где-то используется? Если нет, то всё можно сделать намного проще.
Ответьте, пожалуйста, на все эти вопросы четко и подробно.
0
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147
15.02.2020, 09:38  [ТС]
chumich, 1)первый sed. 2.да который в квадратных скобках. 3. если пробел то индекс k увеличивается.

я не понимаю как из листа sed добавлять что то в ded[k]

Добавлено через 4 минуты
chumich, 4 k это идекс байта.
5. да все что до пробела идет я хочу заносить в sed после пробела не учитывать
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
15.02.2020, 11:10
Цитата Сообщение от Davar Посмотреть сообщение
если пробел то индекс k увеличивается
Увеличение индекса k:
C#
1
2
3
4
5
k = sed[0]; // если надо заменить то, что было
//или
k += sed[0]; // если надо сложить с тем, что было
//или
k += 1; // если надо посчитать пробелы
Добавление в сам список ded:
C#
1
ded.Add(sed[0]);
Добавлено через 5 минут
Цитата Сообщение от Davar Посмотреть сообщение
4 k это индекс байта.
То есть, если я понял правильно, то:
1) Вы периодически вводите что-то в текстбокс (или что-то как-то туда попадает).
2) В этом "что-то" строка разделена пробелом, и Вам нужно собрать в массив или список то, что находится до пробела.
3) Всё, что после пробела Вам впоследствии никуда не нужно.
Так?

Добавлено через 54 минуты
Таким образом, если я правильно понял, то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace FTnew
{
    class send
    {
        static public RichTextBox richT;
        static public List <byte> ded = new List<byte>();
 
        static public void sending() 
        {
            string[] text = richT.Text.Split(' ');
            ded.Add(byte.Parse(text[0]));
        }
    }
}
Или так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace FTnew
{
    class send
    {
        static public RichTextBox richT;
        static public List <byte> ded = new List<byte>();
 
        static public void sending() 
        {
            ded.Add(byte.Parse(richT.Text.Split(' ')[0]));
        }
    }
}

Не по теме:

А если Linqчеватели заглянут - они еще круче сделают )))

0
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147
18.02.2020, 08:31  [ТС]
chumich, как увеличить индекс именно после проверки??? не понимаю как это сделать
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
18.02.2020, 16:02
Цитата Сообщение от Davar Посмотреть сообщение
как увеличить индекс именно после проверки?
Так он сам увеличивается после добавления элемента.
C#
1
ded.Add(byte.Parse(richT.Text.Split(' ')[0]));
Изначально ded пустой. После добавления первого элемента из текстбокса, индекс становится равен нулю. После второго будет равен 1 и так далее. Если мы говорим про индекс k в ded[k].
Если про что-то другое, то описывайте проблему более понятно.
0
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147
18.02.2020, 21:28  [ТС]
chumich, ded.Add(byte.Parse(stext[j])); да про индекс j как его можно увеличить после добавление . у меня добавление происходит в цикле for.
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
18.02.2020, 21:42
Я так понимаю, что в предыдущих сообщениях я "сам с собой разговаривал". Напишите весь тот код, который у Вас сейчас, какой индекс в этом коде надо увеличить, зачем и когда. И если я пойму, что Вы написали, то может и предложу что-нибудь.
0
3 / 3 / 0
Регистрация: 03.12.2018
Сообщений: 147
19.02.2020, 06:04  [ТС]
chumich, да я сам тут костыль придумал...

string text = richT.Text;
for (int i = 0; i < text.Length; i++) {
try
{
string[] stext = richT.Text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);


ded.Add(byte.Parse(stext[j]));

MessageBox.Show(ded[j].ToString());
if (ded.Count() > j) j++;
}
catch { break; }
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
19.02.2020, 07:44
. Если это работает, то поздравляю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2020, 07:44
Помогаю со студенческими работами здесь

с# forms индекс находится вне границ массива
вод кусочек кода программы, отвечающий за сортировку по алфавиту: private void button4_Click(object sender, EventArgs e) { ...

Ошибка "Индекс находится вне границ массива"
allval = Math.Round(usdValue, 2).ToString() + &quot;;&quot; + Math.Round(euroValue, 2).ToString(); if...

При попытке сортировать dataGridView (щелкая по заголовкам) индекс находится вне границ
Здравствуйте, вопрос такой: при попытке сортировать dataGridView (щелкая по заголовкам) индекс находится вне границ, какое событие...

Индекс вне границ массива
Задание: Дана матрица размера M × N. Найти количество ее строк, элементы которых упорядочены по возрастанию. Мы задаем размерность...

Индекс вне границ массива
Доброго времени суток форумчане. Сейчас столкнулся с проблемой на счёт определения границ массива. Ошибочка начинается с 19 строки кода. Не...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru