コード例 #1
0
        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();// вывод всей сохраненной инфы
        }
コード例 #2
0
        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, "Ошибка чтения");
            }
        }