Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Поиск строк в тхт файле по ключевым словам C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 1805
Подскажите код, который будет работать по такой схеме
В зависимости от выделенных элементов чекбоксов (см. скрин) а в коде программы:
• первый чекбокс имеет статичное значение [ERROR]
• второй чекбокс имеет статичное значение [WARN ]
• третий чекбокс имеет статичное значение [SKIP ]

После нажатия кнопки «Запуск проверки» программа полезит в папку на удаленной машине где лежат файлы (тхт). В них ищет строки с ключевыми словами и выводит в list.box
Вот набросал код, но он малость не подходит
private void button2_Click(object sender, EventArgs e)
        {
            StreamReader str = new StreamReader(@"\\term\logs\*.txt");
            while (!str.EndOfStream)
            {
                string st = str.ReadLine();
                if (st.StartsWith(textBox1.Text))
                {
                    textBox1.Text = st;
                    break;// останавливаем цикл
                }
            }
            str.Close();
        }


PS: Остальные элементы программы работают

К сообщению приложен файл. Размер - 8Kb
3 окт 17, 09:39    [20838000]     Ответить | Цитировать Сообщить модератору
 Re: Поиск строк в тхт файле по ключевым словам C#  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 17510
SAS2014
выводит в list.box
SAS2014
textBox1.Text = st;
3 окт 17, 09:45    [20838025]     Ответить | Цитировать Сообщить модератору
 Re: Поиск строк в тхт файле по ключевым словам C#  [new]
Ролг Хупин
Member

Откуда: Оттуда
Сообщений: 1438
Shocker.Pro
SAS2014
выводит в list.box
SAS2014
textBox1.Text = st;


Крутой вираж

if (st.StartsWith(textBox1.Text))
                {
                    textBox1.Text = st;
                    break;// останавливаем цикл
                }
5 окт 17, 11:08    [20844566]     Ответить | Цитировать Сообщить модератору
 Re: Поиск строк в тхт файле по ключевым словам C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 1805
Я хочу чтобы в directory.Info передовались данные значения из datagridview те. у меня там во втором столбце хранятся адреса каталогов, вот их надо по очереди анализировать.

var directory = new DirectoryInfo(textBox1.Text);
DateTime from_date = DateTime.Today;
DateTime to_date = DateTime.Now;
var files = directory.GetFiles()
.Where(file => file.LastWriteTime >= from_date && file.LastWriteTime <= to_date);

Как это сделать, чтобы вместо textBox1.Text попадали строки из datagridview ????
12 окт 17, 07:21    [20862640]     Ответить | Цитировать Сообщить модератору
 Re: Поиск строк в тхт файле по ключевым словам C#  [new]
stomsky
Member

Откуда: Волгоград
Сообщений: 124
SAS2014
Как это сделать, чтобы вместо textBox1.Text попадали строки из datagridview ????

А DataGridView у тебя к какому источнику данных подвязан? Просто пытаться брать данные непосредственно из DataGridView идеологически неверно. Надо брать из его DataSource.
12 окт 17, 10:06    [20862880]     Ответить | Цитировать Сообщить модератору
 Re: Поиск строк в тхт файле по ключевым словам C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 1805
Тут возникла странная ситуация вообщем
написал прогу текст:
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using System.Diagnostics;

namespace cheksdatabases
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        
            button3.Enabled = false;
        }

        // Выбор каталога
        private void button2_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog paths = new FolderBrowserDialog();
            if (paths.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = paths.SelectedPath;
            }
        }

        // Фильтрация файлов в каталоге
        private void button1_Click(object sender, EventArgs e)
        {
         
           

           listBox1.Items.Clear();
           var directory = new DirectoryInfo(textBox1.Text); /////////////////////?
           DateTime from_date = DateTime.Today; // от начало суток
           DateTime to_date = DateTime.Now; // текущию сутки
           var files = directory.GetFiles()
          .Where(file => file.LastWriteTime >= from_date && file.LastWriteTime <= to_date);

           foreach (var f in files)
           {
               String ora = "ORA-"; // если есть в лог файле ошибки ORA
               String exp = "EXP-"; // если есть в лог файле ошибки EXP
               StreamReader str3 = new StreamReader(textBox1.Text + f);
               while (!str3.EndOfStream)
               {
                   string st = str3.ReadLine();
                   if (st.StartsWith(ora) || st.StartsWith(exp))  // поиск ошибок
                   {
                       listBox1.Invoke(new MethodInvoker(() => listBox1.Items.Add("[Бэкап прошел с ошибками]")));
                       break;
                   }
                   else
                   {
                       listBox1.Invoke(new MethodInvoker(() => listBox1.Items.Add("[Бэкап прошел успешно]")));
                       break;
                   }

               }
        
           }
           
          //
 
        }

        // Загузка списка каталагов с бэкапами
        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'backupsOrclDataSet.backups' table. You can move, or remove it, as needed.
            this.backupsTableAdapter.Fill(this.backupsOrclDataSet.backups);
            
            
        }

        // Сохранение изменений списка бэкапов
        private void button4_Click(object sender, EventArgs e)
        {
            this.backupsTableAdapter.Update(this.backupsOrclDataSet.backups);
        }


        // Сохранить список
        private void button3_Click(object sender, EventArgs e)
        {
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Filter = "txt files (*.txt)|*.txt";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if ((myStream = saveFileDialog1.OpenFile()) != null)
                {
                    StreamWriter sw = new StreamWriter(myStream);
                    for (int i = 0; i < listBox1.Items.Count; i++)
                    {
                        listBox1.SelectedIndex = i;
                        sw.WriteLine(listBox1.SelectedItem.ToString());
                    }
                    sw.Close();
                    myStream.Close();
                }
            }
        }

       
    

        private void button7_Click(object sender, EventArgs e)
        {
            Close();
            
        }

    }
}


К сообщению приложен файл. Размер - 139Kb
13 окт 17, 09:45    [20866253]     Ответить | Цитировать Сообщить модератору
 Re: Поиск строк в тхт файле по ключевым словам C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 1805
уточнение вопросов

1. почему не возможно сохранить в базу данных отладчика (не посредстве но запуская приложения из studio)?
2. как сделать так чтоб использовался только один файл базы данных?
13 окт 17, 09:48    [20866266]     Ответить | Цитировать Сообщить модератору
 Re: Поиск строк в тхт файле по ключевым словам C#  [new]
SAS2014
Member

Откуда: Сталинград
Сообщений: 1805
в догонку

К сообщению приложен файл. Размер - 41Kb
13 окт 17, 09:51    [20866276]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить