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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2011, 17:57   #1
Exoo
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 53
Вопрос Ограничение количества вводимых сиволов

Доброго времени суток!
У меня такой вопрос:
каким образом можно ограничить количество вводимых символов переменной типа стринг?
нужно задать кол-во вводимых символов - пусть будет n символов.
я попробовал так сделать
Код:
writeln('Enter N');
 readln(n);
 
 
 writeln('Enter string');
 repeat
 readln(s);
 until length(s)<=n;
но проблема в том что я хочу сделать чтобы символы после введенных символов вообще не вводились.
а так получается что пока количество введенных символов не совпадет с n, пользователь вводит строку.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.
Exoo вне форума Ответить с цитированием
Старый 13.11.2011, 18:25   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Код:
Program ll;
uses crt;
var
n,k:integer;
s:string;
begin
clrscr;
writeln('Enter n:');
readln(n);
repeat
     {$V-}
    writeln('Enter string');
    readln(s);
     {$V+}
    k:=length(s);
until k>=n ;
readln;
end.
В конце правда лишняя строка получается(уже когда вводиш).Попробуй директиву проверки длинны введенных слов использовать.Выше описал.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 13.11.2011, 18:35   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Leshii, так не пойдёт.
Можно вот так:
Код:
uses crt;
var
 s : string;
 c : char;
begin
  s:='';
  clrscr;
  while length(s) <= 10 do
  begin
    c:=readkey;
    write(c);
    s:=s+c;
  end;
  read;
end.
_-Re@l-_ вне форума Ответить с цитированием
Старый 13.11.2011, 18:38   #4
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Тогда сразу вопрос, а почему?
Я просто исходил от того факта что ограничение вводится.Но ошибок не исключаю.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 13.11.2011, 19:05   #5
Exoo
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 53
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Leshii, так не пойдёт.
Можно вот так:
Код:
......
этот вариант не работает если вводить определенное число н.
или я что-то криво делаю.

Цитата:
Сообщение от Leshii Посмотреть сообщение
Код:
.....
В конце правда лишняя строка получается(уже когда вводиш).Попробуй директиву проверки длинны введенных слов использовать.Выше описал.
тот же эффект получается что и у моего варианта кода.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.
Exoo вне форума Ответить с цитированием
Старый 13.11.2011, 19:12   #6
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
этот вариант не работает если вводить определенное число н.
Я привёл простой пример, где ограничение на 10 символов.Думается, это не сложно переделать так, чтобы ограничение было n символов. Ежели вам это сложно - во фриланс.
Цитата:
или я что-то криво делаю.
Скорее руки кривые.
Цитата:
тот же эффект получается что и у моего варианта кода.
Просто оба ваших примера кода позволят ввести сколь угодно символов.
_-Re@l-_ вне форума Ответить с цитированием
Старый 13.11.2011, 19:30   #7
Exoo
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 53
По умолчанию

Код:
writeln('Enter N');
 readln(n);
 writeln('Enter string');
 s:='';
  while length(s) <= n do
  begin
    c:=readkey;
    write(c);
    s:=s+c;
  end;
все разобрался - вся проблема в паскалеАБЦ была
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок, а в том, чтобы писать программы, работающие при любом количестве ошибок.
Exoo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли ограничение в 97-2010 версиях Excel ограничение на размер массива? clever77 Microsoft Office Excel 18 15.05.2011 00:50
Ограничение количества вводиміх символов на ассемблере Жосс Помощь студентам 1 23.02.2011 00:31
Ограничение количества символов в Richviewedit Shouldercannon Общие вопросы Delphi 3 26.05.2010 13:43
Ограничение количества запусков файла. sergiksergik Microsoft Office Excel 3 04.02.2010 12:44
Ограничение вводимых значений для combobox Katunya Общие вопросы Delphi 17 29.01.2010 10:11