Beispiel #1
0
        // Загрузить массив из файла
        public void OpenFile(string filename)
        {
            if (!File.Exists(filename))
            {
                throw new Exception("Файл не существует");
            }

            if (ProcFile.Count != 0)
            {
                DeleteAllRows();
            }

            using (StreamReader sw = new StreamReader(filename))
            {
                while (!sw.EndOfStream)
                {
                    string   str          = sw.ReadLine();
                    string[] dataFromFile = str.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries);

                    ushort id           = (ushort)Convert.ToInt32(dataFromFile[0]);
                    string title        = dataFromFile[1];
                    string family       = dataFromFile[2];
                    string coresthreads = dataFromFile[3];
                    ushort year         = (ushort)Convert.ToInt32(dataFromFile[4]);
                    string arch         = dataFromFile[5];
                    string socket       = dataFromFile[6];

                    CPU_Row procRow = new CPU_Row(id, title, family, coresthreads, year, arch, socket);
                    AddRow(procRow);
                }
            }
        }
Beispiel #2
0
        int IComparer.Compare(object x, object y)
        {
            CPU_Row procRow1 = (CPU_Row)x;
            CPU_Row procRow2 = (CPU_Row)y;

            return((m_direction == SortDirection.Ascending) ?
                   procRow1.ProcYear.CompareTo(procRow2.ProcYear) :
                   procRow2.ProcYear.CompareTo(procRow1.ProcYear));
        }
Beispiel #3
0
        // Изменить год выпуска процессора
        public void EditProcYear(ushort year, int index)
        {
            CPU_Row proc = (CPU_Row)ProcFile[index];

            if ((year < 1971) || (year > (DateTime.Now.Year) + 10))
            {
                throw new Exception("Год выпуска должен быть не раньше 1971 и не позднее " + (DateTime.Now.Year) + 10);
            }
            proc.ProcYear = year;
        }
Beispiel #4
0
        //Нажали на ячейку/строку
        private void dataGrid_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                int     indRow = dataGrid.Rows[e.RowIndex].Index;
                CPU_Row _proc  = (CPU_Row)data.ProcFile[indRow];

                CellClick_TextBoxInfo(_proc);
            }
            catch
            {
            }
        }
Beispiel #5
0
        //И данные из строки поместились в поля на форме
        private void CellClick_TextBoxInfo(CPU_Row proc)
        {
            button_AddRow_Click(button_AddRow, null);

            textBox_ID.Text           = proc.ProcID.ToString();
            textBox_Title.Text        = proc.ProcTitle;
            comboBox_Family.Text      = proc.ProcFamily;
            textBox_CoresThreads.Text = proc.ProcCoresThreads;
            textBox_Year.Text         = proc.ProcYear.ToString();
            textBox_Arch.Text         = proc.ProcArch;
            textBox_Socket.Text       = proc.ProcSocket;

            TextBoxsDisabled();
        }
Beispiel #6
0
        //Добавить новую запись в базу
        private void button_Add_Click(object sender, EventArgs e)
        {
            try
            {
                ProcID = textBox_ID.Text = generateID().ToString();

                ProcTitle        = textBox_Title.Text;
                ProcFamily       = comboBox_Family.Text;
                ProcCoresThreads = textBox_CoresThreads.Text;
                ProcYear         = textBox_Year.Text;
                ProcArch         = textBox_Arch.Text;
                ProcSocket       = textBox_Socket.Text;

                CPU_Row proc = new CPU_Row(
                    (ushort)Convert.ToInt32(textBox_ID.Text),
                    textBox_Title.Text,
                    comboBox_Family.Text,
                    textBox_CoresThreads.Text,
                    (ushort)Convert.ToInt32(textBox_Year.Text),
                    textBox_Arch.Text,
                    textBox_Socket.Text);

                data.AddRow(proc);
                int n = data.ProcFile.Count;

                CPU_Row proc1 = (CPU_Row)data.ProcFile[n - 1];
                dataGrid.Rows.Add
                    (proc1.ProcID,
                    textBox_Title.Text,
                    comboBox_Family.Text,
                    textBox_CoresThreads.Text,
                    textBox_Year.Text,
                    textBox_Arch.Text,
                    textBox_Socket.Text);

                BanChangeColumn(n - 1);

                TextBoxsClear();

                if ((!timer1.Enabled) && (filename != ""))
                {
                    timer1.Enabled = true;
                    timer1.Start();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Ошибка: {ex.Message}");
            }
        }
Beispiel #7
0
        //Записать базу в таблицу
        private void WriteToDataGrid()
        {
            try
            {
                for (int i = 0; i < data.ProcFile.Count; i++)
                {
                    CPU_Row proc = (CPU_Row)data.ProcFile[i];
                    dataGrid.Rows.Add(
                        proc.ProcID,
                        proc.ProcTitle,
                        proc.ProcFamily,
                        proc.ProcCoresThreads,
                        proc.ProcYear,
                        proc.ProcArch,
                        proc.ProcSocket);

                    BanChangeColumn(i);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Ошибка: {ex.Message}");
            }
        }
Beispiel #8
0
        // Изменить сокет процессора
        public void EditProcSocket(string socket, int index)
        {
            CPU_Row proc = (CPU_Row)ProcFile[index];

            proc.ProcSocket = socket;
        }
Beispiel #9
0
        // Изменить архитектуру процессора
        public void EditProcArch(string arch, int index)
        {
            CPU_Row proc = (CPU_Row)ProcFile[index];

            proc.ProcArch = arch;
        }
Beispiel #10
0
        // Изменить кол-во ядер и потоков
        public void EditProcCoresThreads(string coresthreads, int index)
        {
            CPU_Row proc = (CPU_Row)ProcFile[index];

            proc.ProcCoresThreads = coresthreads;
        }
Beispiel #11
0
        // Изменить семейство процессора
        public void EditProcFamily(string family, int index)
        {
            CPU_Row proc = (CPU_Row)ProcFile[index];

            proc.ProcFamily = family;
        }
Beispiel #12
0
        // Изменить название процессора
        public void EditProcTitle(string title, int index)
        {
            CPU_Row proc = (CPU_Row)ProcFile[index];

            proc.ProcTitle = title;
        }
Beispiel #13
0
 // Добавить новую строку в файл
 public void AddRow(CPU_Row procRow)
 {
     ProcFile.Add(procRow);
 }
Beispiel #14
0
        // Поиск совпадений по базе, и получение ID всех найденных записей
        // Возвращает -1, если совпадений не найдено
        public List <int> SearchRows(string query)
        {
            List <int> count = new List <int>();

            //Проверяются ID и год выпуска
            if (ushort.TryParse(query, out ushort num_query))
            {
                for (int i = 0; i < ProcFile.Count; i++)
                {
                    CPU_Row procRow = (CPU_Row)ProcFile[i];

                    if (procRow.ProcID == num_query)
                    {
                        count.Add(i);
                        break; // Если нашли запись по уникальному ID, то закончить поиск
                    }
                    else
                    {
                        if (procRow.ProcYear == num_query)
                        {
                            count.Add(i);
                        }
                    }
                }

                if (count.Count == 0)
                {
                    count.Add(-1);
                }
                return(count);
            }

            // Поиск по текстовым полям записи
            query = query.ToLower(); // перевод в нижний регистр
            query = query.Replace(" ", "");

            for (int i = 0; i < ProcFile.Count; i++)
            {
                CPU_Row procRow = (CPU_Row)ProcFile[i];

                if (procRow.ProcTitle.ToLower().Replace(" ", "").Contains(query))
                {
                    count.Add(i);
                }

                else
                if (procRow.ProcFamily.ToLower().Replace(" ", "").Contains(query))
                {
                    count.Add(i);
                }

                else
                if (procRow.ProcCoresThreads.ToLower().Replace(" ", "").Contains(query))
                {
                    count.Add(i);
                }

                else
                if (procRow.ProcArch.ToLower().Replace(" ", "").Contains(query))
                {
                    count.Add(i);
                }

                else
                if (procRow.ProcSocket.ToLower().Replace(" ", "").Contains(query))
                {
                    count.Add(i);
                }
            }

            if (count.Count == 0)
            {
                count.Add(-1);
            }
            return(count);
        }