Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 21.02.2020
Сообщений: 34

Есть ли какой-то способ получить хотя бы номер последней строки в консоли?

12.09.2020, 08:06. Показов 1338. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ли какой-то способ получить хотя бы номер последней строки в консоли если каретку поставили, например, на позицию 0.0 и не были сохранены координаты каретки при вводе последней строки?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.09.2020, 08:06
Ответы с готовыми решениями:

Есть ли какой-то способ узнать, что с консоли введен именно текст, а не цифры
Добрий день! Есть ли какой-то способ узнать что с консоли введен именно текст, а не цифри не используя посимвольное сравнение? Тоесть...

Дано некоторый текст, в котором есть хотя бы одна запятая. Определить порядковый номер последней запятой в тексте
Дано некоторый текст, в котором есть хотя бы одна запятая. Определить порядковый номер последней запятой в тексте

Дано некоторый текст, в котором есть хотя бы одна запятая. Определить порядковый номер последней запятой в тексте
Дано некоторый текст, в котором есть хотя бы одна запятая. Определить порядковый номер последней запятой в тексте

8
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,138
Записей в блоге: 2
12.09.2020, 10:54
Цитата Сообщение от Dima Al Посмотреть сообщение
способ получить хотя бы номер последней строки в консоли
Свойства Console.CursorLeft и Console.CursorTop.
0
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,217
12.09.2020, 11:26
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Свойства Console.CursorLeft и Console.CursorTop.
Скорее всего именно этими свойствами ТС и устанавливается позицию в 0.0
Цитата Сообщение от Dima Al Посмотреть сообщение
не были сохранены координаты
Не факт что координаты вам помогут запомнить эту позицию, ибо у консоли есть как буфер, так и размеры, и при изменении этих значений координаты могут не помочь
Что касается самого задания - это вам наверно в WinAPI надо лезть, так как стандартных методов, которые определяют последнюю запись в консоли, нету.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,138
Записей в блоге: 2
12.09.2020, 11:31
Цитата Сообщение от Enifan Посмотреть сообщение
Скорее всего именно этими свойствами ТС и устанавливается позицию в 0.0
Обычно используют метод Console.SetCursorPosition(Int32, Int32).
Если Dima Al использует свойства, тогда, вообще, не понятно в чём возникли у него трудности.
0
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,217
12.09.2020, 11:59
Цитата Сообщение от Элд Хасп Посмотреть сообщение
тогда, вообще, не понятно в чём возникли у него трудности
Как я понял, он хочет написать какой то текст, потом установить через эти свойства каретку в 0.0 но при этом не запоминая последнюю позицию (не ясно почему этот вариант не привлекателен), написать какой то текст в 0.0 а потом продолжить ввод с последней позиции. Зачем усложнять - мне не известно. Единственная причина - создание двух переменных int, которые якобы "убьют память". Но это мое мнение, не более.
0
0 / 0 / 0
Регистрация: 21.02.2020
Сообщений: 34
13.09.2020, 08:20  [ТС]
пишу метод на подобии writeline при котором строка будет мигать. метод должен быть сделан таким образом, чтобы после него можно было спокойно использовать writeline и readline. под миганием воспринимается переписывание строки на пустую и обратно по таймеру каждую микросекунду. проблема в том, что readline должен работать после такой мигающей надписи. нужно, чтобы каретка скакалка постоянно к последней надписи и последнему символу на консоли, чтобы можно было спокойно вводить текст с клавиатуры.
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
13.09.2020, 10:32
Типа такого?
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
        static void Main(string[] args)
        {
            var input = InvitationInput("Привет");
            var input2 = InvitationInput("Привет", 600);
        }
 
        static string InvitationInput(string invitationText, int interval = 300)
        {
            int row = Console.CursorTop;
            string spaces = new string(' ', invitationText.Length);
            Timer t = new Timer(interval);
            List<char> input = new List<char>();
            bool needHide = false;
            t.Elapsed += (s, e) =>
            {
                if (needHide)
                {
                    Console.SetCursorPosition(0, row);
                    Console.Write($"{spaces} {new string(input.ToArray())}");
                }
                else
                {
                    Console.SetCursorPosition(0, row);
                    Console.Write($"{invitationText} {new string(input.ToArray())}");
                }
                needHide ^= true;
            };
            t.Start();
 
            ConsoleKeyInfo key;
            while ((key = Console.ReadKey()).Key != ConsoleKey.Enter)
                input.Add((char)key.KeyChar);
 
            t.Stop();
 
            if(!needHide)
            {
                Console.SetCursorPosition(0, row);
                Console.Write($"{invitationText} {new string(input.ToArray())}");
            }
 
            Console.SetCursorPosition(0, row + 1);
            return new string(input.ToArray());
        }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,138
Записей в блоге: 2
13.09.2020, 12:42
Цитата Сообщение от Dima Al Посмотреть сообщение
проблема в том, что readline должен работать после такой мигающей надписи. нужно, чтобы каретка скакалка постоянно к последней надписи и последнему символу на консоли, чтобы можно было спокойно вводить текст с клавиатуры.
Само мигание сделать не трудно.
Но есть нюансы работы консоли.

Мигающая надпись находится в какой-то позиции консоли.
Но её смещение относительно курсора для пользовательского ввода может изменять многими способами.

Допустим, курсор в последней строке окна консоли и пользователь вводит длинную строку.
Курсор без Enter переходит на другую строку и если в этот момент мигающая надпись отображается, то она уйдёт выше окна консоли.
Потом без нажатия Enter пользователь удаляет часть строки, и уехавшая вверх строка может спуститься даже ниже первой.
Так же непонятно как всё это должно реагировать на изменение пользователь размера окна консоли.

Если брать во внимание только сам вопрос: способ получить хотя бы номер последней строки в консоли.
То ответ очень простой: в событии таймера в самом начале надо запомнить текущую позицию курсора из свойств Console.CursorLeft и Console.CursorTop и перед выходом из события восстановить запомненную позицию.

Добавлено через 18 минут
Цитата Сообщение от Toros1992 Посмотреть сообщение
Типа такого?
Типа да, но реализация..., скажем так - не ахти:
  • Timer сделайте статическим полем инициализируем один раз.

  • Обработчик тика сделайте статическим методом.

  • В обработчике содержание мигающей строки должно считываться из статического свойства. Также возможно обработка других статических свойств (периода мигания, позиции строки и т.п.)

  • В методе InvitationInput должно быть только установка значения этих статических свойств.
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
13.09.2020, 12:50
Элд Хасп, я дал автору пример, на котором можно ознакомиться со способом решения. Я не пытался дать образец идеального выполнения задачи. Обсуждать идеальное решение можно до бесконечности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.09.2020, 12:50
Помогаю со студенческими работами здесь

Найти номер последней строки матрицы 7х6, содержащей хотя бы один ноль
Задачи легкие, но для такого новичка, как я, это стало преградой в получении зачета. Сроки уже поджимают и самому разбираться будет...

Определить номер последней строки матрицы, которая содержит хотя бы один отрицательный элемент
Здравствуйте, не могу разобраться с массивом. Задание:Определить номер последней строки в массиве, которая содержит хотя бы один...

Как получить первые 4 символа последней строки из консоли в переменную?
Здравствуйте! Пишу программу (виндоус форм) которая будет автоматически перезапускать процессы в которых произойдёт ошибка. Проблема такая...

Проект .adp: получить ОДНО значение с свервера - какие способы есть, какой способ лучше?
Дано: 1) проект .adp, подключенный к базе даных на сервере MS SQL Server. 2) текст запроса, выбирающий ровно одно значение (одно поле,...

Есть ли способ узнать, какая ячейка была активной последней?
Hi, ALL! Есть ли способ узнать, какая ячейка была активной последней? К примеру при использовании Worksheet_Change()


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru