private void buttonApply_Click(object sender, EventArgs e)// Apply { // создание масива на размер таблицы (позже прога скоректирует размер до правельного) if (sizeArr < exelConsole.RowCount) // получаем его размернось { sizeArr = exelConsole.RowCount - 1; // -1 т.к. dataGridView1.RowCount - больше на 1 чем наш массив } if (sizeArr == 0) // если sizeArr = 0 то выходим из программы { return; } // создадим ссылку на массив (инициализируем ниже) arr = new Basa[sizeArr]; int indexRightObject = 0; // index что бы заполнять arr без пропусков (от неудачно считанных) int unreadObjects = 0; // кол-во НЕ считаных объектов for (int i = 0; i < sizeArr; i++) { Basa temp = new Basa();/// ///////////////////////////////////////////////////////////////////////////////////////////////////////// протестить try { // пробуем считать temp.ID = Convert.ToInt32(exelConsole[0, i].Value); // ID temp.Year = Convert.ToInt32(exelConsole[1, i].Value); // Год temp.NumberOfCar = exelConsole[2, i].Value.ToString(); // Номер temp.ColourOfCar = exelConsole[3, i].Value.ToString(); // Цвет temp.MarkOfCar = exelConsole[4, i].Value.ToString(); // Марка temp.FullName = exelConsole[5, i].Value.ToString(); // ФИО temp.Address = exelConsole[6, i].Value.ToString(); // Адрес // если объект успешно считан то пихаем в массив arr[indexRightObject] = temp; indexRightObject++; } catch (Exception ex) { MessageBox.Show(ex.Message); unreadObjects++; } } if (unreadObjects > 0) // если есть непрочитанные объекты { sizeArr -= unreadObjects; // удаляем хвост пустых элементов в arr Array.Resize(ref arr, sizeArr); } MessageBox.Show("Cохранено:" + sizeArr + "\nНесохраненных: " + unreadObjects); printInfo();// вывод всей сохраненной инфы }
private void buttonOpenFile_Click(object sender, EventArgs e)// Upload Info File { // ShowDialog() показывает диалоговое окно if (openFileDialog.ShowDialog() == DialogResult.Cancel) { return; } // получаем путь к файлу string filename = openFileDialog.FileName; try { // вариант альтернативный вариант но из-за PeekChar() бывают ошибки "god save you" //using (BinaryReader reader = new BinaryReader(File.Open(filename, FileMode.Open))) // создаем объект BinaryReader //{ // // создание мссива // sizeArr = reader.ReadInt32();// получаем размер массива // //MessageBox.Show("" + sizeArr); // arr = new Class1[sizeArr]; // for (int i = 0; i < sizeArr; i++) // arr[i] = new Class1(); // dataGridView1.RowCount = sizeArr;// создаем кол-во строк для данных // // пока не достигнут конец файла // // считываем каждое значение из файла // for (int i = 0; reader.PeekChar() > -1; i++) // { // arr[i].A1 = reader.ReadInt32(); // arr[i].A2 = reader.ReadInt32(); // arr[i].Str1 = reader.ReadString(); // arr[i].Str2 = reader.ReadString(); // } //} // десериализация из файла using (FileStream fs = new FileStream(filename, FileMode.OpenOrCreate)) { sizeArr = (int)formatter.Deserialize(fs);// получем размер массива // создаем массив объектов arr = new Basa[sizeArr]; for (int i = 0; i < sizeArr; i++) { arr[i] = new Basa(); } // считываем данные из файла for (int i = 0; i < sizeArr; i++) { arr[i] = (Basa)formatter.Deserialize(fs); } } MessageBox.Show("Файл загружен. Размер: " + sizeArr); printInfo();// вывод инфы в exel } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка чтения"); } }