Almost456
Гость
|
|
« : 14-12-2009 13:56 » |
|
Вот как это сделать? Допустим, ограничить до 8 цифр.
|
|
« Последнее редактирование: 14-12-2009 15:25 от Sel »
|
Записан
|
|
|
|
Sla
|
|
« Ответ #1 : 14-12-2009 14:34 » |
|
Написать свой "обработчик", используя функции keypressed и readkey.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #2 : 14-12-2009 14:42 » |
|
А ещё лучше перехватить прерывания от клавиатуры.
|
|
« Последнее редактирование: 14-12-2009 15:25 от Sel »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Almost456
Гость
|
|
« Ответ #3 : 14-12-2009 14:48 » |
|
Тип а, вот так? repeat ClrScr; gotoxy(5,5); write('n='); readln(n); until keypressed до 8 раз
|
|
« Последнее редактирование: 14-12-2009 17:21 от Sel »
|
Записан
|
|
|
|
Sla
|
|
« Ответ #4 : 14-12-2009 15:01 » |
|
Almost456, вот как раз убрать readln
И почитать хелп про readkey. Кстати, в хелпе и пример использования есть.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Almost456
Гость
|
|
« Ответ #5 : 14-12-2009 15:29 » |
|
Слушай, ну подскажи...по идее так должно работать, но не получается. begin ClrScr; gotoxy(5,5); write('n=') while keypressed do begin ch:=readkey; inc(k); end; if k=8 then exit; readln; end.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #6 : 14-12-2009 15:53 » |
|
Бред... 1. зачем gotoxy ? (ладно не мешает) 2. какой тип возвращает функция readkey? 3. Зачем в конце readln 4. Приблизительный шаблон var InpNum : string; ch:char; i:integer; begin while i<8 do begin ch:=Readkey; /*накапливаем символы в InpNum */ inc(i); end; /*преобразовываем строку в число*/ end.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Almost456
Гость
|
|
« Ответ #7 : 14-12-2009 15:56 » |
|
Ты пойми,нужно ограничить число не в виде строки, а как ввод данных, короче не string'ом.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #8 : 14-12-2009 16:05 » |
|
Almost456, Это ты пойми, что преобразование типов строковых в численные происходит на уровне библиотек, к которым у тебя нет доступа. Поэтому тебе дается в руки некий API, который позволяет решить твою задачу, и даже больше.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #9 : 14-12-2009 16:44 » |
|
Наверно лучше сразу пропускать в накопительный буфер лишь цифры. А ещё внутри хорошо бы выводить накопительный буфер на экран - к вопросу о gotoxy.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Almost456
Гость
|
|
« Ответ #10 : 16-12-2009 13:03 » |
|
Интересно.Ведь я же попросил пожалуйста.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #11 : 16-12-2009 13:17 » |
|
Almost456, т.е. ты даже и не понял что я тебе сказал?
Тогда объясняю.
Преобразование типов строковых в численные происходит на уровне библиотек, к которым у тебя нет доступа.
Это значит, что если ты напишешь readln(N), где N:integer, то компилятор вместо процедуры readln подставит, приблизительно, следующий код.
1. Прочитать буфер клавиатуры. 2. Полученную строку преобразовать в целочисленное значение. Почему строку? Потому что клавиатура это символьное устройство.
Ты на этапе выполнения этого не увидишь, а в программу попадет уже целочисленное значение, если, конечно, не было ошибки при вводе.
Поэтому тебе дается в руки некий API, который позволяет решить твою задачу, и даже больше. Чтобы управлять вводом/выводом тебе предоставлены для использования набор функций (API, пусть это так называется).
Тоже самое и при выводе
writeln(N) = Преобразовать N в строку Выдать в буфер видео.
Почему в строку? Потому что display - символьное устройство.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #12 : 18-12-2009 05:58 » |
|
как гласит нелюбимая всеми справка, Read считывает все символы до (но не включая) следующего маркера конца строки или пока Eof(F) станет равным True. Read не переходит к следующей строке после чтения. Если полученная в результате строка длиннее, чем максимальная длина строковой переменной, то она усекается. После первого Read, каждые последующие вызовы Read будут видеть маркер конца строки и возвращать строку нулевой длины. т.е. для ограничения восемью символами достаточно читать в строку в 8 символов длиной: var s: string [8]; begin Write ('Enter s: '); ReadLn (s); WriteLn ('s = ', s); end. результат: Enter s: 123456789 s = 12345678
|
|
|
Записан
|
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #13 : 18-12-2009 08:08 » |
|
кстати, F1
Так там же всё на английском.
если кому-то надо - могу скинуть русский turbo.tph (файл турбо-паскалевской справки). выкладывать не буду, ибо не уверен, что это не будет варез, посему заинтересованным - в личку .
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #14 : 18-12-2009 08:52 » |
|
x77, можно к нам в архив скинуть.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #15 : 18-12-2009 08:58 » |
|
x77, можно к нам в архив скинуть.
ок, цепляю.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #16 : 18-12-2009 09:22 » |
|
Игорь, это на русском?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #17 : 18-12-2009 11:07 » |
|
Джон, да, по идее - просто заменяешь им одноимённый файл в каталоге bin.
з.ы. но не весь турбо-паскакаль превратиться в русский, а только справка.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #18 : 18-12-2009 11:39 » |
|
Я понял, что это только хэлп. Эх, и где ты был двадцать лет назад!
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #19 : 18-12-2009 11:44 » |
|
Джон, двадцать лет назад я уже шесть лет, как учил английский и справку читал почти свободно тогда у меня хелпа тоже не было.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #20 : 18-12-2009 11:45 » |
|
20 лет назад, тоже был русский под тройку в виде перевода текстового файлика) потом под пятерку, под шестерку не видел.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #21 : 18-12-2009 12:19 » |
|
Что толку было от тогдашнего школьно-универовского аглицкого 20 лет назад? Специальных терминов всё-равно не знали. Словарь Борковского только в 90ом вышел, да и то заказывали его за бешеные деньги в единственном экземпляре. А так до всех премудростей приходилось доходить методом научного тыка. Хорошо ещё что у Борланда всегда примеры кода были в хэлпе (рабочие!!!).
У нас Турбо-Паскаль 5.5 тогда уже был.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
RXL
|
|
« Ответ #22 : 19-12-2009 23:30 » |
|
x77, можно к нам в архив скинуть.
ок, цепляю. Выложу в архиве и тут ссылочку дам. Но завтра.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #23 : 23-05-2010 05:19 » |
|
Ром, выкладывал ?
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #24 : 23-05-2010 06:30 » |
|
Не помню - это пол года назад было
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|