.NET 4.x При streamreader.ReadLine() выскакивает ошибка object reference not set to an instance of object - C#
Формулировка задачи:
Здраствуйте, у меня вдруг появилась такая проблема, что при streamreader.ReadLine() выскакивает ошибка object reference not set to an instance of object
вот код процедуры:
по началу ругаеться только не парвую строку считывания, но думаю что и на все остальные так же будет.
не могу понять в чем же проблема, т.к. конструктор класа таков:
а масив даных таков:
ничего не помогает(
мои сэтеры:
а так же описание проблеми:
где 108 рядок это рядок вызова процедуры, а 436 это :
помогите пожалуйста, ато я только недавно начал изучать С#, а полазив по форумах с похожей проблемой все равно не смог с ней справится.
public void ReadFile() { StreamReader streamreader = new StreamReader("Exhibitions.txt"); FileInfo file = new FileInfo("Exhibitions.txt"); First(); _current = 0; string hourformat = "t"; string dateformat = "dd.MM.yyyy"; while (!streamreader.EndOfStream) { _exhibitions[_current].set_name_exh(streamreader.ReadLine()); _exhibitions[_current].set_description_exh(streamreader.ReadLine()); _exhibitions[_current].set_category_exh(streamreader.ReadLine()); _exhibitions[_current].set_autor_exh(streamreader.ReadLine()); _exhibitions[_current].set_start_date_exh(DateTime.ParseExact(streamreader.ReadLine(), dateformat, System.Globalization.CultureInfo.InvariantCulture)); _exhibitions[_current].set_end_date_exh(DateTime.ParseExact(streamreader.ReadLine(), dateformat, System.Globalization.CultureInfo.InvariantCulture)); _exhibitions[_current].set_start_hour_exh(DateTime.ParseExact(streamreader.ReadLine(), hourformat, System.Globalization.CultureInfo.InvariantCulture)); _exhibitions[_current].set_end_hour_exh(DateTime.ParseExact(streamreader.ReadLine(), hourformat, System.Globalization.CultureInfo.InvariantCulture)); // out_all_result(_exhibitions[_current]); _current++; } streamreader.Close(); }
public Exhibitions() { name_exh = ""; description_exh = ""; category_exh = ""; autor_exh = ""; start_date_exh = DateTime.Now; end_date_exh = DateTime.Now; start_hour_exh = DateTime.Now; end_hour_exh = DateTime.Now; }
public Exhibitions[] _exhibitions = new Exhibitions[50]; //даже делал так пере запуском процедуры private Exhibitions exhibitions; public void arraies() { exhibitions = new Exhibitions(); for(int i = 0;i<50;i++) { _exhibitions[i] = exhibitions; } }
public void set_name_exh(string name) { name_exh = name; } public void set_description_exh(string description) { description_exh = description; } public void set_category_exh(string category) { category_exh = category; } public void set_autor_exh(string autor) { autor_exh = autor; } public void set_start_date_exh(DateTime start_date) { start_date_exh = start_date; } public void set_end_date_exh(DateTime end_date) { end_date_exh = end_date; } public void set_start_hour_exh(DateTime start_hour) { start_hour_exh = start_hour; } public void set_end_hour_exh(DateTime end_hour) { end_hour_exh = end_hour; }
System.NullReferenceException не обработано
HResult=-2147467261
Message=Object reference not set to an instance of an object.
Source=analysis system exhibiting
StackTrace:
at analysis_system_exhibiting.Exh_iter.ReadFile() in c:\Users\_DarkSiR_\Desktop\курсова\analysis system exhibiting\analysis system exhibiting\Exhibitions.cs:line 436
at analysis_system_exhibiting.Form1.button4_Click(Object sender, EventArgs e) in c:\Users\_DarkSiR_\Desktop\курсова\analysis system exhibiting\analysis system exhibiting\Form1.cs:line 108
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMes sageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at analysis_system_exhibiting.Program.Main() in c:\Users\_DarkSiR_\Desktop\курсова\analysis system exhibiting\analysis system exhibiting\Program.cs:line 19
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
_exhibitions[_current].set_name_exh(streamreader.ReadLine());
public void WriteFile(string name, string description, string category, string autor, string start_date, string end_date, string start_hour, string end_hour) { StreamWriter streamwriter; FileInfo file = new FileInfo("Exhibitions.txt"); streamwriter = file.AppendText(); streamwriter.WriteLine(name); streamwriter.WriteLine(description); streamwriter.WriteLine(category); streamwriter.WriteLine(autor); streamwriter.WriteLine(start_date); streamwriter.WriteLine(end_date); streamwriter.WriteLine(start_hour); streamwriter.WriteLine(end_hour); streamwriter.Close(); } //которая вызывается вот сдесь: private void button1_Click(object sender, EventArgs e) { iter = new Exh_iter(); string hourformat = "t"; string dateformat = "dd.MM.yyyy"; if ((this.textBox1.Text != "") && (this.textBox2.Text != "") &&(this.textBox3.Text != "") &&(this.textBox4.Text != "") &&(this.textBox5.Text != "") &&(this.textBox6.Text != "") &&(this.textBox7.Text != "") &&(this.richTextBox1.Text != "")) { string name = this.textBox1.Text; string description = this.richTextBox1.Text; string category = this.textBox2.Text; string autor = this.textBox7.Text; string start_date = this.textBox3.Text; string end_date = this.textBox4.Text; string start_hour = this.textBox5.Text; string end_hour = this.textBox6.Text; iter.WriteFile(name, description, category, autor, start_date, end_date, start_hour, end_hour); this.Hide(); this.Close();//кстати эта функция тоже почему то не работает, но хоть ошибку не выбивает, просто не закрывает форму. ниодну. Form1 form1 = new Form1(); form1.HideToolStripMenuItem(); form1.ShowDialog(); } else { Form6 form6 = new Form6(); form6.ShowDialog(); } }
Решение задачи: «.NET 4.x При streamreader.ReadLine() выскакивает ошибка object reference not set to an instance of object»
textual
Листинг программы
for (i = 0; i < 50; i++) { if (search_result[i] == null) break; this.richTextBox1.Text += iter.out_all_result(search_result[i]); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д