NullReferenceException при чтении блоков файла - C#
Формулировка задачи:
Добрый день! подскажите еще такой вопрос считываю из файла строки(поблочно) все нормально считывал потом не с того невсего выдает ошибку - ополнительные сведения: Ссылка на объект не указывает на экземпляр объекта. на строчке string ReadBlock = voprosnik.SingleOrDefault(v => v.Number == i).VoprosText; уже пробывал проинициализировать везде, всеравно также, непойму в чем проблема(
вот пример файла:
****
1
1 блок
Номенклатура: 32 СПО 6 зак-20-6 зак ном
Высота: 1001 вмм
Ширина: 1022 шмм
Количество изделий: 1 шт
ОбщаяПлощадь: 0,57
ОбщийВес: 17,1
Толщина изделия: 42 тщ
****
2
2 блок
Номенклатура: 32 СПО 6 зак-20-6 зак ном
Высота: 1000 вмм
Ширина: 1049 шмм
Количество изделий: 5 шт
ОбщаяПлощадь: 0,61
ОбщийВес: 18,3
Толщина изделия: 42 тщ
****
3
3 блок
Номенклатура: 32 СПО 6 зак-20-6 зак ном
Высота: 1000 вмм
Ширина: 1048 шмм
Количество изделий: 5 шт
ОбщаяПлощадь: 0,61
ОбщийВес: 18,3
Толщина изделия: 42 тщ
Листинг программы
- private void button1_Click(object sender, EventArgs e)
- {
- List<Vopros> voprosnik = new List<Vopros>();
- string file = string.Empty;
- Encoding windows1251 = Encoding.GetEncoding("Windows-1251");
- using (StreamReader reader = new StreamReader(@"D:\input.txt", windows1251))
- {
- file = reader.ReadToEnd();
- // reader.Close();
- }
- Encoding windows12512 = Encoding.GetEncoding("Windows-1251");
- StreamReader re = new StreamReader(@"D:\input.txt", windows12512);
- // foreach (int k in NumberBlock(re))
- // {
- //MessageBox.Show(k.ToString());
- // }
- int j = NumberBlock(re);
- string[] mas = file.Split(new string[] { "****" }, StringSplitOptions.RemoveEmptyEntries);
- Vopros vopros;
- foreach (string str in mas)
- {
- vopros = new Vopros(str.Trim());
- if (vopros.IsValid)
- {
- voprosnik = new List<Vopros>();
- voprosnik.Add(vopros);
- }
- }
- int shirina_textbox = Convert.ToInt32(txt_shirina.Text);
- int shirina_visota = Convert.ToInt32(txt_visota.Text);
- int kollizdAll = 0;
- for (int i = 1; i < j+1; i++)
- {
- //try
- //{
- // //voprosnik = new List<Vopros>();
- string ReadBlock = voprosnik.SingleOrDefault(v => v.Number == i).VoprosText;//проходим по блокам
- //int ShirinaIzd = Shirina(ReadBlock);
- //int VisotaIzd = Visota(ReadBlock);
- // MessageBox.Show(ShirinaIzd.ToString());
- //нормативы по изделия сколько изделий по толщине полезут в ящик
- if ((shirina_textbox >= Shirina(ReadBlock)) && (shirina_visota >= Visota(ReadBlock)))
- {
- MessageBox.Show(Shirina(ReadBlock).ToString());
- kollizdAll = kollizdAll + Kol_Izd(ReadBlock);
- lbl_kolizd.Text = "В данном заказе найдено: " + kollizdAll.ToString() + " количество изделий";
- int Width_draw = 440;//ширина внутри ящика
- int Thickness_Probka = Thickness_SP(ReadBlock) + 3; // толщина изделия + пробка 3 мм
- int Raschet_izd = Width_draw / Thickness_Probka; // получили количество изделия в ящике
- int Shirina_product = Thickness_Probka * Raschet_izd;//ширина изделия должно быть <=440
- int Lenght_Ultimate = Visota(ReadBlock) + 250; //конечная длина изделия
- int Visota_Ultimate = Shirina(ReadBlock) + 100; // конечная высота изделия
- // в лист боксе Длина(Lenght_Ultimate) по 1 изделю такая то //Длина по номенклатуре в количестве изделий и высотой*шириной = ......
- // по 42 = 9 изделий в ящик
- int gg = Shirina(ReadBlock);
- listBox_lengh.Items.Add("ДЛИНА " + "по " + Nomenklatura(ReadBlock) + " в количестве изделий: " + Kol_Izd(ReadBlock).ToString() + "c размерами " + (Visota(ReadBlock)).ToString()
- + "x"+gg.ToString() + "= " + Lenght_Ultimate);
- }
- public class Vopros
- {
- public int Number { get; set; }
- public bool IsValid { get; set; }
- public string VoprosText { get; set; }
- public Vopros(string text)
- {
- string[] mas = text.Split(new string[] { "\n", "\r" }, StringSplitOptions.RemoveEmptyEntries);
- int num;
- IsValid = Int32.TryParse(mas[0], out num);
- if (!IsValid) return;
- Number = num;
- VoprosText = text;
- }
- }
Решение задачи: «NullReferenceException при чтении блоков файла»
textual
Листинг программы
- for (int i = 0; i < j; i++)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д