Вовлеченный
1 / 1 / 0
Регистрация: 30.05.2019
Сообщений: 29
1

Как сделать так, чтобы был один string на весь класс?

27.06.2019, 09:16. Показов 1370. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Я хотел бы узнать, есть ли какой-нибудь метод, который дал бы написать один раз string и в последующем коде использовать его в разных уровнях. Каждый раз приходится придумывать разные переменные, чтобы присвоить одну и ту же директорию.
Вот кусочек кода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
        private void OnTimedEvent(Object source, ElapsedEventArgs e)
        {
            if (listBox1.SelectedIndex != -1)
            {
                aTimer.Enabled = false;
                listBox1.Items.Clear();
                textBox1.Clear();
                DirectoryInfo dirir = new DirectoryInfo("C:\\Заявки");
                FindInDir(dirir, "*.xml");
                listBox1.SelectedIndex = 0;
                string fileNam = listBox1.Text;
                string resultat;
                resultat = Path.GetFileName(fileNam);
                File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToLongTimeString() + " - Info - Сканируется заявка - " + resultat + Environment.NewLine);
                XmlDocument doc = new XmlDocument();
                doc.Load(listBox1.Text);
                XmlNodeList matches = doc.SelectNodes("Tests/*/CommandLine");
                foreach (XmlNode isbn in matches)
                {
                    textBox1.Text = isbn.InnerText;
                    try
                    {
                        DirectoryInfo dir = new DirectoryInfo("C:\\Хранилище");
                        FindInDir(dir, "*" + textBox1.Text + "*");
                        if (File.Exists(Path.Combine("C:\\Папка назначения", textBox1.Text)))
                        {
                            FileInfo fi = new FileInfo(Path.Combine("C:\\Хранилище", textBox1.Text));
                            FileInfo fil = new FileInfo(Path.Combine("C:\\Папка назначения", textBox1.Text));
                            if (fi.LastWriteTime > fil.LastWriteTime)
                            {
                                fi.CopyTo(Path.Combine("C:\\Папка назначения", textBox1.Text), true);
                                File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToLongTimeString() + " - Info - Файл: " + textBox1.Text + " - скопирован." + Environment.NewLine);
                            }
                            if (fi.LastWriteTime == fil.LastWriteTime)
                            {
                                File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToLongTimeString() + " - Info - Файл: " + textBox1.Text + " - уже существует в папке назначения." + Environment.NewLine);
                            }
                        }
                        else
                        {
                            FileInfo fi = new FileInfo(Path.Combine("C:\\Хранилище", textBox1.Text));
                            fi.CopyTo(Path.Combine("C:\\Папка назначения", textBox1.Text), true);
                            File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToLongTimeString() + " - Info - Файл: " + textBox1.Text + " - скопирован." + Environment.NewLine);
                        }
                    }
                    catch
                    {
                        File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToLongTimeString() + " - Info - Файл: " + textBox1.Text + " - не найден." + Environment.NewLine);
                    }
                    continue;
                }
                string fileName = listBox1.Text;
                string path = "C:\\Заявки";
                string path2 = "C:\\Архив";
                string result;
                result = Path.GetFileName(fileName);
                if (File.Exists(Path.Combine(path, result)))
                {
                    FileInfo fo = new FileInfo(Path.Combine(path, result));
                    FileInfo fa = new FileInfo(Path.Combine(path2, result));
                    if (fo.LastWriteTime > fa.LastWriteTime)
                    {
                        fo.CopyTo(Path.Combine(path2, result), true);
                        File.Delete(Path.Combine(path, result));
                        File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToLongTimeString() + " - Info - Заявка - " + result + " - перемещен в архив." + Environment.NewLine);
                    }
                    if (fo.LastWriteTime < fa.LastWriteTime)
                    {
                        //fo.CopyTo(Path.Combine(path2, result), true);
                        File.Delete(Path.Combine(path, result));
                        File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToLongTimeString() + " - Info - Заявка - " + result + " - удалена, т.к. заявка с таким названием уже существует в архиве." + Environment.NewLine);
                    }
                    if (fo.LastWriteTime == fa.LastWriteTime)
                    {
                        File.Delete(Path.Combine(path, result));
                        File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToLongTimeString() + " - Info - Заявка - " + result + " - уже существует в архиве." + Environment.NewLine);
                    }
                }
                else
                {
                    FileInfo fo = new FileInfo(Path.Combine(path, result));
                    fo.CopyTo(Path.Combine(path2, result), true);
                    File.Delete(Path.Combine(path, result));
                    File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", DateTime.Now.ToLongTimeString() + " - Info - Заявка - " + result + " - перемещен в архив." + Environment.NewLine);
                }
            }
            aTimer.Enabled = true;
            listBox1.Items.Clear();
            textBox1.Clear();
            DirectoryInfo diriri = new DirectoryInfo("C:\\Заявки");
            FindInDir(diriri, "*.xml");
            listBox1.SelectedIndex = 0;
            File.AppendAllText("C:\\Log\\" + DateTime.Today.ToString("yyyyMMdd") + ".txt", " " + Environment.NewLine);
        }
Код выглядит слишком большим.
Когда надо сменить директорию, приходится многое менять.
В просторах интернета я ничего не нашел на счет этого , помогите.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2019, 09:16
Ответы с готовыми решениями:

Как сделать так чтобы borland paskal 32 бит был на весь экран
как сделать так чтобы у меня borland paskal на 32 битке был на весь экран или подскажите на какой...

Как сделать так, чтобы размер формы был максимальным т.е. форма была на весь экран?
Привет. Помогите, пожалуйста, решить пару проблем. Есть Эксел файл, при открытии которого...

Как сделать так, чтобы на одной строке были 2 div, один был с левой стороны экрана, второй с правой?
Мне нужно, чтобы заголовок окна был прикреплён к левой части экрана, кнопка к правой. При...

Как сделать так, чтобы был доступ к методу вложенного класса, если объявлен только внешний класс
То есть если в классе Class есть вложенный класс innerClass с методом method() была возможна такая...

5
1510 / 901 / 328
Регистрация: 17.05.2015
Сообщений: 3,400
27.06.2019, 09:23 2
Цитата Сообщение от Reck1esS Посмотреть сообщение
Код выглядит слишком большим
Он таким не выглядит, а является. Разбейте его на методы, путь в виде строки передавайте как аргумент.
1
2785 / 1661 / 878
Регистрация: 14.04.2015
Сообщений: 5,650
27.06.2019, 09:39 3
Лучший ответ Сообщение было отмечено Reck1esS как решение

Решение

Reck1esS, создай глобальные переменные, сколько нужно, например:
C#
1
public static string PathRequest = @"C:\Заявки";
и пиши вместо путей эти переменные. Это же базовые знания, как ты мог не найти?

Добавлено через 1 минуту
и называй переменные осмысленно, а не такого вида: string path, path2. Это полное профанство, и еще запутаться можно легко.
1
Вовлеченный
1 / 1 / 0
Регистрация: 30.05.2019
Сообщений: 29
27.06.2019, 09:48  [ТС] 4
Я только начинаю изучать C#, не бейте
Спасибо за совет
0
2785 / 1661 / 878
Регистрация: 14.04.2015
Сообщений: 5,650
27.06.2019, 10:40 5
Reck1esS, так у тебя же внутри метода есть переменные. ты же их как-то создал.
Область видимости (контекст) переменных
1
Вовлеченный
1 / 1 / 0
Регистрация: 30.05.2019
Сообщений: 29
27.06.2019, 10:51  [ТС] 6
Просто я еще не полностью изучил базу C#. Я учусь на практике

Добавлено через 27 секунд
Спасибо за полезную ссылку
0
27.06.2019, 10:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2019, 10:51
Помогаю со студенческими работами здесь

Как мне сделать так, чтобы данный текстовый файл был открыт один раз при запуске программы и закрыт при закрытии программы?
Привет! Возник следующий вопрос. Программа состоит из основного окна Form1 и нескольких Unit. По...

Как сделать что бы один класс был выше другого
Собственно мне нужно, что бы класс .topmenu, был на сайте выше, чем .img, абсолюты менять не хочу,...

Как сделать так, чтобы планшет был подключен к прокси
Здравствуйте! Есть одна проблема... При подключении к школьному wifi(edu tatar) через учительский...

Как сделать так чтобы был и фон и блочная вёрстка
&lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru