Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
ORLENOK
86 / 86 / 35
Регистрация: 05.08.2011
Сообщений: 400
Завершенные тесты: 5
1

История введенных команд в консоли

24.03.2014, 17:32. Просмотров 1643. Ответов 21
Метки нет (Все метки)

Нужно при закрытии программы в файл вывести историю введенных команд. Как это реализовать можно?
Подробнее: в консольном приложении в c# вводим команды. В дальнейшем при нажатии кнопки вверх мы видим предыдущую введенную команду. Нужно: получить данный список команд в файл. Желательно: проделать обратную операцию, т.е. при загрузке программы в данный "буфер" записать команды из этого файла.
Есть идея: при введении команды сразу дописывать её в файл, но как бы понимаю, что это не ок, часто открывать и закрывать поток... А как проделать записать обратно не понятно... Какие идеи?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2014, 17:32
Ответы с готовыми решениями:

Создание и исполнение команд в консоли из плагинов
Доброго времени суток. Как можно сделать объект команды, на подобие public...

Выполнение команд в консоли. Как выполните вход в определенный каталог
подскажите пожалуйста, как выполните вход в определенный каталог... Использую...

Повторять процедуру авторизации в консоли при неверно введенных данных
День добрый, Заранее прошу извинения если вопрос задан глупо так как я...

История браузеров
Приветствую всех. Собственно, как посмотреть историю посещения сайтов...

Запись в файл 10 имен последних открытых файлов (история)
Всем доброго времени суток! Возник следующий вопрос. Как записать значения...

21
Learx
1045 / 852 / 194
Регистрация: 31.03.2010
Сообщений: 2,487
28.03.2014, 13:26 21
ORLENOK, код в студию, пожалуйста
0
ORLENOK
86 / 86 / 35
Регистрация: 05.08.2011
Сообщений: 400
Завершенные тесты: 5
29.03.2014, 14:07  [ТС] 22
Цитата Сообщение от Learx Посмотреть сообщение
ORLENOK, код в студию, пожалуйста
Переменные, и метод считывания введенных букв.
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
public static int PosCurs = 0;
        public static string Commands = "";
        public static List<string> allCommands = new List<string>();
        public static int PosAll = 0;
        static int maxCom = 0;
        static void Main()
        {
            ConsoleKeyInfo ourKey;
            do
            {
                do
                {
                    PosCurs = Console.CursorLeft;
                    ourKey = Console.ReadKey();
                    KeyHandler(ourKey);
 
                } while (ourKey.Key != ConsoleKey.Enter);
 
                allCommands.Add(Commands);
                if (Commands.Length > maxCom)
                    maxCom = Commands.Length;
                PosAll = allCommands.Count;
                Commands = "";
 
                Console.WriteLine();
 
            } while (true);
        }
Код самого обработчика вот такой получился:
Кликните здесь для просмотра всего текста
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
static void KeyHandler(ConsoleKeyInfo key)
        {
            
            switch (key.Key)
            {
                case ConsoleKey.LeftArrow:
                    {
                        left();
                        break;
                    }
                case ConsoleKey.RightArrow:
                    {
                        if (PosCurs >= Commands.Length & Commands.Length > 0)
                        {
                            Console.CursorLeft -= 2;
                            PosCurs = Console.CursorLeft;
                        }
                        else
                        {
                            
                            Console.CursorLeft=PosCurs;
                        }
                        
                        WriteCommand();
                        if(Commands.Length>0)
                        Console.CursorLeft = PosCurs+1;
                        break;
                    }
                case ConsoleKey.UpArrow:
                    {
                        if (PosAll != 0)
                        {
                            PosAll -= 1;
                            Commands = allCommands[PosAll];
                            WriteCommand();
                            PosCurs = Commands.Length;
                            Console.CursorLeft = PosCurs;
                        }
                        else
                        {
                            if (PosCurs > 0)
                            {
                                WriteCommand();
                                Console.CursorLeft = PosCurs;
                            }
                            else
                                left();
                        }
                        break;
                    }
                case ConsoleKey.DownArrow:
                    {
                        if (PosAll < allCommands.Count-1)
                        {
                            PosAll += 1;
                            Commands = allCommands[PosAll];
                            WriteCommand();
                            PosCurs = Commands.Length;
                            Console.CursorLeft = PosCurs;
                        }
                        else
                        {
                            if (PosCurs > 0)
                            {
                                WriteCommand();
                                Console.CursorLeft = PosCurs;
                            }
                            else
                            left();
                            
                        }
                        break;
                    }
                case ConsoleKey.Backspace:
                    {
                        if (PosCurs > 0 & Commands.Length>0)
                        {
                            Commands = Commands.Remove(PosCurs-1) + Commands.Remove(0, PosCurs);
                            PosCurs--;
                        }
                            
                        WriteCommand();
                        Console.Write("\t\t");
                        Console.CursorLeft = PosCurs;
                        break;
                    }
                case ConsoleKey.Delete:
                    {
                        if (PosCurs < Commands.Length & Commands.Length > 0)
                        {
                            Commands = Commands.Remove(PosCurs) + Commands.Remove(0, PosCurs+1);
                        }
 
                        WriteCommand();
                        Console.Write("\t\t");
                        Console.CursorLeft = PosCurs;
                        break;
                    }
                case ConsoleKey.Enter:
                    {
                        
                        break;
                    }
                default:
                    {
                        if (Regex.Matches(key.KeyChar.ToString(), @"[\w ]").Count > 0 & key.KeyChar.ToString().Length == 1)
                        {
                            if (PosCurs >= Commands.Length)
                            {
                                Commands += key.KeyChar;
                            }
                            else
                            {
                                Commands = Commands.Remove(PosCurs) + key.KeyChar + Commands.Remove(0, PosCurs);
                            }
                            WriteCommand();
                            Console.CursorLeft = PosCurs + 1;
                            
 
                        }
                        else
                        {
 
                            WriteCommand();
                            Console.CursorLeft = PosCurs;
                        }
                        break;
                    }
            }
        }
 
        static void WriteCommand()
        {
            Console.CursorLeft = 0;
 
            Console.Write(Commands.PadRight(maxCom+Commands.Length));
            Console.CursorLeft = Commands.Length;
        }
 
        static void left()
        {
            if (PosCurs > 0)
            {
                Console.CursorLeft -= 2;
                PosCurs = Console.CursorLeft;
            }
            WriteCommand();
            Console.CursorLeft = PosCurs;
 
        }
1
29.03.2014, 14:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2014, 14:07

Почему в консоле история команд чистится
Всем привет, После установки Kubuntu 18, заметил что используя консоль закрыв...

История консоли Packet Tracer
Приветствую. Вопрос такой. Как посмотреть историю консоли в PKT ? Возможно...

Интерпретация команд, введенных в TextBox
вот такой вопрос: как лучше оформить код чтобы &quot;комп знал что делать&quot; , умно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru