K
K
KAPJICOH2018-06-10 20:51:11
C++ / C#
KAPJICOH, 2018-06-10 20:51:11

How to solve the errors that appeared after writing a program to translate words?

There is a working code, but there were errors during debugging. And there are a lot of problems with the program itself.
Cannot start debugging because the debug object is missing.
Severity Code Description Project File Row Column Suppression Status
Error CS0103 The name 'Properties' does not exist in the current context. WindowsFormsApplication4 c:\users\gulia\documents\visual studio 2015\Projects\WindowsFormsApplication4\WindowsFormsApplication4\Program.cs 20 29 Active
Error CS0103 The name 'File' does not exist in the current context. WindowsFormsApplication4 c:\users\gulia\documents\visual studio 2015\Projects\WindowsFormsApplication4\WindowsFormsApplication4\Program.cs 20 17 Active
Error CS0103 The name 'Form1' does not exist in the current context. WindowsFormsApplication4 c:\users\gulia\documents\visual studio 2015\Projects\WindowsFormsApplication4\WindowsFormsApplication4\Program.cs 1 15 Active
Code:

spoiler
using Model;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Linq;

namespace AppTranslator
{
public partial class Form1 : Form
{
    //хранилище слов
    Dictionary store;
    
    public Form1()
    {
    InitializeComponent();
    //если файл существует 
    if (File.Exists(Properties.Settings.Default.Path))
    //извлекаем из него информацию
    store = XMLHelper.Load(Properties.Settings.Default.Path);
    else //иначе создаем новый объект
    store = new Dictionary();
}
    //переключение режимов
    private void англорусскийToolStripMenuItem_Click(object sender, EventArgs e)
    {
    Properties.Settings.Default.Mode = Mode.EngRus.ToString();
    русскоанглийскийToolStripMenuItem.Checked = false;
    англорусскийToolStripMenuItem.Checked = true;
}
    private void русскоанглийскийToolStripMenuItem_Click(object sender, EventArgs e)
    {
    Properties.Settings.Default.Mode = Mode.EngRus.ToString();
    англорусскийToolStripMenuItem.Checked = false;
    русскоанглийскийToolStripMenuItem.Checked = true;
}
    private void загрузкаБДToolStripMenuItem_Click(object sender, EventArgs e)
    {
    //диалог для открытия файла
    var fd = new OpenFileDialog();
    //ставим фильтр только на .xml файлы
    fd.Filter = "Xml files (.xml)|*.xml";
    //если какой-то из файлов был выбран
    if (fd.ShowDialog() == DialogResult.OK)
    {
    //загружаем информацию
    store = XMLHelper.Load(fd.FileName);
    //сохраняем путь
    Properties.Settings.Default.Path = fd.FileName;
}
}
    private void добавитьСловоToolStripMenuItem_Click(object sender, EventArgs e)
    {
    var form = new AddWord();
    //открываем диалоговую форму для добавления файла
    form.ShowDialog();
    
    foreach (var record in form.Records)
    {
    //если значение уже есть в словаре добавляем новые переводы
    //в соответствующий список
    if (store.ContainsKey(record.Word))
    foreach (var r in record.Values)
    store[record.Word].Values.Add(r);
    else
    //иначе добавляем новую запись
    store.Add(record.Word, record);
}
    //сохраняем новую информацию в файл
    XMLHelper.Save(store, Properties.Settings.Default.Path);
}
    private void button1_Click(object sender, EventArgs e)
    {
    //получаем слово для перевода
    var key = textBox1.Text.Trim().ToLower();
    //если слово есть в хранилище выводим все варианты перевода
    if (store.ContainsKey(key))
    textBox2.Text = string.Join(Environment.NewLine, store[key].Values);
    else
    {
    //проверяем что такое слово не встречается нигде в "вариантах" перевода
    var first = store.FirstOrDefault(pair => pair.Value.Values.Contains(key));
    if (first.Value != null) //если такое слово есть отображаем его
    textBox2.Text = first.Value.Word;
    else
    MessageBox.Show("Указанное слово отсутствует в словаре");
}
}
}
}
    
    namespace Model
    {
    //вспомогательный класс для работы с xml
    public static class XMLHelper
    {
    //метод, отвечающие за получение информации из файле
    public static Dictionary Load(string path)
    {
    var xd = XDocument.Load(path);
    return
    xd.Element("root") //получаем корень
    .Elements("word")//возвращаем все элементы с указанным названием
    .Select(word => new Record //преобразовываем XElement в тип записи
    (
    word: (string)word.Attribute("value"),
    values: word.Elements("translation").Select(x => (string)x),
        mode: (Mode)Enum.Parse(typeof(Mode), (string)word.Attribute("mode"))
      ))
      //создаем словарь для быстрой проверки нахождения слова
      .ToDictionary(x => x.Word, val => val);
    
}
//сохранение инфорации в файл
public static void Save(Dictionary dct, string path)
{
    var xd = new XElement("root");
    
    foreach (var val in dct.Values)
    {
        xd.Add(new XElement("word",
                            new XAttribute("mode", val.Mode),
                            new XAttribute("value", val.Word),
                            val.Values.Select(t => new XElement("translation", t)).ToArray()
                            ));
    }
    xd.Save(path);
}
}
}

namespace AppTranslator
{
public partial class AddWord : Form
{
    //список добавленных слов
    public List Records { get; set; }
    private Mode mode;
    public AddWord()
    {
    InitializeComponent();
    Enum.TryParse(Properties.Settings.Default.Mode, out mode);
    
    Records = new List();
    
    button1.Click += Button1_Click;
    button2.Click += Button2_Click;
}
    //обработчики событий
    private void Button2_Click(object sender, EventArgs e)
    {
    this.Close();
}
    private void Button1_Click(object sender, EventArgs e)
    {
    //преобразуем слово введенное пользователем к нижнем регистру, а также удаляем начальные и конечные пробельные символы
    var word = textBox1.Text.Trim().ToLower();
    var values =
    textBox2.Text //разбиваем строку из второго текстобокса по символу-разделителю
    .Split(new[] { "\n" }, StringSplitOptions.RemoveEmptyEntries)
    .Select(x => x.ToLower());//приводим к нижнему регистру
    //создаем запись
    var record = new Record(word, values, mode);
    //добавляем её в список
    Records.Add(record);
    //очищаем поля для ввода
    textBox1.Clear();
    textBox2.Clear();
}
}
}
    
    namespace Model
    {
    //перечисление с возможными режимами
    public enum Mode { RusEng, EngRus }
    //класс запись, отвечает за одну запись в файл
    public class Record
    {
    //слово
    public string Word { get; private set; }
    //множество значений для перевода
    public HashSet Values { get; private set; }
    public Record(string word, IEnumerable values, Mode mode)
    {
    Word = word;
    Values = new HashSet(values);
    Mode = mode;
}
}
}
    //режим
    public Mode Mode { get; private set; }}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
E
eRKa, 2018-06-10
@kttotto

It cannot be working if there are such errors. Apparently, libraries are not connected or references to the project are not specified, or namespaces are not specified.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question