Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2013, 20:15   #1
Miwqa
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 12
По умолчанию строки

Как сделать так, чтобы при нажатии на Backspace удалялся 1 символ. Например, мы вводим 123(отображается "***")и после нажатия на Backspace должно остаться 12("**").
Код:
write('Введите пароль: ');
Repeat
C := ReadKey;
Write('*');
if p <> #13 then p := p + C;
Until C = #13;
delete(p,length(p), 1);
У меня получается только так:
Код:
Repeat
C := ReadKey;
if c<>#8 then
begin
Write('*');
if l<>#13 then l := l + C;
end
else
begin
delete(l,length(l), 1);
write(l);
end;
Until C = #13;
Здесь у меня вводишь 123 и при нажатии Backspace выводит 12312
Miwqa вне форума Ответить с цитированием
Старый 02.03.2013, 22:27   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
uses
        Crt;
var
        s : string;
        c : Char;

begin
        s := '';
        c := #0;
        while c <> #13 do begin
                c := ReadKey;
                if (c <> #8) and (c <> #13) then
                        s := s + c
                else if c = #8 then
                        Delete (s, Length(s), 1)
        end;
        WriteLn (s)
end.
Со '*' сами нахимичите.
Poma][a вне форума Ответить с цитированием
Старый 03.03.2013, 11:58   #3
Miwqa
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Код:
uses
        Crt;
var
        s : string;
        c : Char;

begin
        s := '';
        c := #0;
        while c <> #13 do begin
                c := ReadKey;
                if (c <> #8) and (c <> #13) then
                        s := s + c
                else if c = #8 then
                        Delete (s, Length(s), 1)
        end;
        WriteLn (s)
end.
Со '*' сами нахимичите.
Здесь текст появляется после нажатия на Enter, а мне надо чтобы выводилось то, что вводишь и, чтобы можно было это стереть
Miwqa вне форума Ответить с цитированием
Старый 03.03.2013, 12:15   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Добавил 2 строчки
Код:
uses
        Crt;
var
        s : string;
        c : Char;

begin
        s := '';
        c := #0;
        while c <> #13 do begin
                c := ReadKey;
                if (c <> #8) and (c <> #13) then
                        s := s + c
                else if c = #8 then
                        Delete (s, Length(s), 1);
                ClrScr;
                Write (s)
        end
end.
То что в коде 2 развилки - мне очень не нравится, но как избавиться от этой бяки, я не знаю..
Poma][a вне форума Ответить с цитированием
Старый 03.03.2013, 12:21   #5
Miwqa
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Добавил 2 строчки
Код:
uses
        Crt;
var
        s : string;
        c : Char;

begin
        s := '';
        c := #0;
        while c <> #13 do begin
                c := ReadKey;
                if (c <> #8) and (c <> #13) then
                        s := s + c
                else if c = #8 then
                        Delete (s, Length(s), 1);
                ClrScr;
                Write (s)
        end
end.
То что в коде 2 развилки - мне очень не нравится, но как избавиться от этой бяки, я не знаю..
спасибо огромное) сейчас еще подделаю и все ок)
Miwqa вне форума Ответить с цитированием
Старый 03.03.2013, 12:48   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Стирание всего экрана после ввода каждого символа? Ж8( )

Нужно стереть на экране единственный символ, для чего передвинуть курсор на 1 позицию назад, вписать пробел и (если процедура отображения символа сдвигает каретку) еще раз подвинуть курсор назад.
s-andriano вне форума Ответить с цитированием
Старый 03.03.2013, 13:09   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Стирание всего экрана после ввода каждого символа?
Согласен! Это редкостная ересь. Но в условиях учебной задачи вполне применима!
Цитата:
Ж8( )
nicht verstehen

Цитата:
Нужно стереть на экране единственный символ, для чего передвинуть курсор на 1 позицию назад, вписать пробел и (если процедура отображения символа сдвигает каретку) еще раз подвинуть курсор назад.
Повторюсь, ИМХО в данном случае игра не стоит свеч. (да и не знаю я как это можно нахимичить)
Poma][a вне форума Ответить с цитированием
Старый 03.03.2013, 13:17   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
nicht verstehen
Это смайл такой )
Цитата:
да и не знаю я как это можно нахимичить
Вот так например:
Код:
uses crt;
var c:char;
begin
 clrscr;
 c:=readkey;

 repeat
  write(c);
  if c=#8 then write(' '#8);
  c:=readkey;
 until c=#13;
end.
I'm learning to live...

Последний раз редактировалось Stilet; 03.03.2013 в 13:22.
Stilet вне форума Ответить с цитированием
Старый 03.03.2013, 13:27   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

о! Виталий, огроменное спасибо!!
Poma][a вне форума Ответить с цитированием
Старый 03.03.2013, 14:33   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Всегда пожалуйста )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10