Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2014, 00:26   #1
Pikovaya_dama
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 14
По умолчанию Индекс находился вне границ массива

Вроде все просмотрел, но так и не нашел ошибку в коде.
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace KURS
{
    public partial class Chart : Form
    {
        public Chart()
        {
            InitializeComponent();
            createGistTable();
        }        

        Form1 f1 = new Form1();

        private void Chart_Load(object sender, EventArgs e)
        {
            tabPage1.Text = "Гистограмма";
            tabPage2.Text = "Таблица";
        }

        void createGistTable()
        {
            double price_2009 = 1.1;
            double price_2010 = 1.5;

            string[] mass_year_2009 = { "2009", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " };
            string[] mass_year_2010 = { "2010", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " };

            int[] mass_month = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
            
            double[] mass_mount = f1.textBox1.Lines.Where(s => !string.IsNullOrWhiteSpace(s)).Select(n => double.Parse(n)).ToArray();
            
            double[] mass_income_09 = mass_mount.Select(i => (((i * 4) / 5) * price_2009)).ToArray();
            double[] mass_income_10 = mass_mount.Select(i => (((i * 4) / 5) * price_2010)).ToArray();

            // 2009
            for (int n = 0; n < 12; n++)
            {
                dataGridView1.Rows.Add(mass_year_2009[n], mass_month[n], mass_mount[n], price_2009, mass_income_09[n]);

                chart1.Series[0].Points.AddY(mass_income_09[n]);
                chart1.Series[1].Points.AddY(mass_income_09[n]);
                chart1.Series[2].Points.AddY(mass_income_09[n]);
            }

            // 2010
            for (int n = 0; n < 12; n++)
            {
                dataGridView1.Rows.Add(mass_year_2010[n], mass_month[n], mass_mount[n], price_2010, mass_income_10[n]);

                chart1.Series[3].Points.AddY(mass_income_10[n]);
                chart1.Series[4].Points.AddY(mass_income_10[n]);
                chart1.Series[5].Points.AddY(mass_income_10[n]);
            }
        }
    }
}
Изображения
Тип файла: jpg 006.jpg (45.7 Кб, 123 просмотров)
Pikovaya_dama вне форума Ответить с цитированием
Старый 25.11.2014, 07:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А textBox1 просмотрел? Что выдается в mass_mount?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2014, 17:30   #3
Pikovaya_dama
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А textBox1 просмотрел? Что выдается в mass_mount?
В однооконном режиме все выводит как надо, но если вывести все во вторую форму, то ругается. mass_mount вроде 0 выводит, если правильно смотр. И как вообще можно проверить?
Pikovaya_dama вне форума Ответить с цитированием
Старый 28.11.2014, 20:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как вообще можно проверить?
Легко )
Код:
            for (int n = 0; n < mass_month.GetLength(0); n++)
            {
                dataGridView1.Rows.Add(mass_year_2009[n], mass_month[n], mass_mount[n], price_2009, mass_income_09[n]);

                chart1.Series[0].Points.AddY(mass_income_09[n]);
                chart1.Series[1].Points.AddY(mass_income_09[n]);
                chart1.Series[2].Points.AddY(mass_income_09[n]);
            }
И так далее.
Проверяй что в массив пишется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2014, 20:32   #5
Pikovaya_dama
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Легко )
Код:
            for (int n = 0; n < mass_month.GetLength(0); n++)
            {
                dataGridView1.Rows.Add(mass_year_2009[n], mass_month[n], mass_mount[n], price_2009, mass_income_09[n]);

                chart1.Series[0].Points.AddY(mass_income_09[n]);
                chart1.Series[1].Points.AddY(mass_income_09[n]);
                chart1.Series[2].Points.AddY(mass_income_09[n]);
            }
И так далее.
Проверяй что в массив пишется.
Изменил mass_month.GetLength(0) на mass_mount.GetLength(0) Таблица не имеет строк.

P.S> У меня в коде mount и month, т.е. объем и месяцы.

Последний раз редактировалось Pikovaya_dama; 28.11.2014 в 20:37.
Pikovaya_dama вне форума Ответить с цитированием
Старый 28.11.2014, 22:26   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Таблица не имеет строк.
Значит массив у тебя не формируется )
Теперь ставь точку прерывания и смотри что приходит из эдита.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.11.2014, 22:35   #7
Pikovaya_dama
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Значит массив у тебя не формируется )
Теперь ставь точку прерывания и смотри что приходит из эдита.
Я не настолько знаю шарпея, точку поставил, вижу, что массив не сформировался и равен null.
Pikovaya_dama вне форума Ответить с цитированием
Старый 30.11.2014, 03:03   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Pikovaya_dama Посмотреть сообщение
Я не настолько знаю шарпея, точку поставил, вижу, что массив не сформировался и равен null.
ну так отладчик в руки и проверяем почему не сформировался.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.11.2014, 11:49   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вижу, что массив не сформировался и равен null.
А вот теперь нужно отлаживать (как выше сказано) всю программу. Ниче не поделашь, ошибку придется искать везде.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.11.2014, 13:57   #10
Pikovaya_dama
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А вот теперь нужно отлаживать (как выше сказано) всю программу. Ниче не поделашь, ошибку придется искать везде.
Там той программы, как кот накакал, но даже среди этого количества строк я не могу вдуплить, где ошибка. Главное в однооконном режиме все как надо работает, но стоило перенести таблицу на вторую форму, на тебе...
Pikovaya_dama вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Индекс находился вне границ массива. Maks3 C# (си шарп) 3 23.11.2014 21:54
Ошибка времени выполнения: Индекс находился вне границ массива (pascal) dijetol Помощь студентам 2 10.04.2014 16:16
Ошибка: Индекс находился вне границ массива archi-boy C# (си шарп) 11 15.11.2013 12:45
Индекс находился вне границ массива. banan4ik Помощь студентам 1 30.05.2013 02:25
[C#] Индекс находился вне границ массива JonMagon Помощь студентам 12 22.01.2012 23:06