Чтение и синтаксический анализ текстовых файлов

#c# #windows-forms-designer #streamreader

#c# #windows-forms-designer #streamreader

Вопрос:

Прежде всего, я ОЧЕНЬ новичок в использовании C # (или любого другого языка программирования, если на то пошло).

Я пытаюсь создать графический интерфейс для подтягивания машинных программ для операторов. Я хочу, чтобы интерфейс: 1) имел выпадающий список part # из списка каталогов (эта часть выполнена) 2) на основе part # я хочу заполнить второе поле со списком именами операций из текстового файла, содержащегося в каталоге этой части. Файл имеет определенный формат следующим образом:

ОПЕРАЦИЯ REV B

C_3000-B_2.7MM_LOCK_COMP_PLATE_PED_GAGE_GPN-00023C.PRG

ОПЕРАЦИЯ REV A

C_3000-A_2.7MM_LOCK_COMP_PLATE_PED_GAGE_GPN-00023B.PRG

Я хочу, чтобы все, что следует за «ОПЕРАЦИЕЙ», отображалось во втором выпадающем списке. После выбора из полей со списком я хочу, чтобы программы, перечисленные в строке OPERATION, были скопированы в «рабочую папку» и выполнены другим программным обеспечением. Я много читал, искал и просматривал видео, но я просто не могу туда добраться.

Я зациклен на том, чтобы значение строки после ОПЕРАЦИИ отображалось во втором выпадающем списке прямо сейчас, не говоря уже о копировании файлов.

 public partial class frmMain : Form
{
    public string OpsPath = "D:\CMM\ProgramOps\";
    public frmMain()
    {
        InitializeComponent();
    }

    private void frmMain_Load(object sender, EventArgs e)
    {

        DirectoryInfo obj = new DirectoryInfo("D:\CMM\ProgramOps\");
        DirectoryInfo[] folders = obj.GetDirectories();
        cmboxParts.DataSource = folders;

    }

    private void cmboxParts_SelectedIndexChanged(object sender, EventArgs e)
    {

        cmboxOps.Items.Clear();
        cmboxOps.SelectedItem = null;
        string Part = (cmboxParts.SelectedItem as string);
        string Opfile = ("D:\CMM\ProgramOps\"   Part  ".OP");

        try
        {
            string line;
            StreamReader sr = new StreamReader(Opfile);
            while ((line = sr.ReadLine()) !=null)
            {
                if line.StartsWith("OPERATION")
                string[] Ops = line.Split(' ');
            }
        }
        catch
        {

        }
    }
}
  

Я понимаю, что это большой проект для новичка, но, думаю, с чего-то нужно начинать.

Я немного читал об использовании регулярных выражений, но это было немного выше моего понимания.

Спасибо

Комментарии:

1. Добро пожаловать в stackoverflow. После if line.StartsWith("OPERATION") создания массива строк, что вы делаете с этим массивом?

2. Если это формат файла, я лично создал бы объект класса, который содержит операцию и программу. Прочитайте весь файл, создавая новые объекты для хранения этих значений и сохранения их в выпадающем списке. Затем оттуда вы можете получить программу из выбора в выпадающем списке для передачи дальше. Но в нынешнем виде у вас есть разделение строк, и вы должны иметь возможность заполнить поле со списком конкатенацией Ops[1] " " Ops[2]

3. @AndrewE Я опубликовал то, что у меня есть до сих пор в коде. Я собирался попробовать проанализировать строки и добавить элементы массива в поле со списком. Как я уже сказал, я новичок в программировании, поэтому для меня это довольно сложно.