Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 160
от 11.06.2003, 03:10

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 282
Отправлено ответов: 994
Активность: 352.4 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Bill
Статус: Опытный
Общий рейтинг: 183.33
Телефон: (8342) 324312
[Подробней >>]
Tibor
Статус: Начальный
Общий рейтинг: 186.66
[Подробней >>]
Zensor
Статус: Начальный
Общий рейтинг: 183.33
[Подробней >>]
 
_vt
Статус: Опытный
Общий рейтинг: 120.42
[Подробней >>]
Tancho
Статус: Опытный
Общий рейтинг: 153.14
[Подробней >>]
Дмитрий
Статус: Опытный
Общий рейтинг: 150.2
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 112.72
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.13
[Подробней >>]
Tigran K. Kalaidjian
Статус: Опытный
Общий рейтинг: 118.25
URL: Методы оптимизации работы ПК
[Подробней >>]
 
X-RayMan
Статус: Начальный
Общий рейтинг: 145.45
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 279. Здравствуйте уважаемые эксперты ! Можно ли сделать защиту от ввода букв (чтобы нельзя было ввести бу... (ответов: 11)
Вопрос № 280. Здравствуйте Tibor ! Извините, я не совсем понял, как этим пользоваться. Как мне кажется прога работ... (ответов: 1)
Вопрос № 282. Здравствуйте ,Tibor. Вы просили оставить мыло- fil_fm@mail.ru мой прошлое письмо было таким: hello... (ответов: 1)

Вопросов: 3, ответов: 13


 Вопрос № 279

Здравствуйте уважаемые эксперты !
Можно ли сделать защиту от ввода букв (чтобы нельзя было ввести буквы) и ограничить вводимые числа до одного символа.
var
a, b, c : Byte ;
Begin
ReadLn (a) ;
ReadLn (b) ;
ReadLn (c) ;
end.



Вопрос отправлен: 07.06.2003, 23:13
Отправитель: Константин

[Следующий вопрос >>] [Список вопросов]

Отвечает Bill

Добрый день, Константин!
1) для ввода одного символа (символа числа) используй ReadKey из модуля CRT.
2) ограничение ввода с ее же помощью. Естественно, что если захочешь вводить "-" или числа типа Real, то логика становится чуть сложнее. Если нужно, то писал когда-то


Приложение:

Ответ отправлен: 08.06.2003, 17:54
Отправитель: Bill


Отвечает Tibor

Здравствуйте, Константин!
то о чём ты говориш, можно зделать с помощью функции ReadKey
примерно так:
uses crt;
var ch : char;
begin
ch := ReadKey;
case ch of
#48..#57:write(ch);
else exit
end;
end.

Ответ отправлен: 08.06.2003, 19:22
Отправитель: Tibor


Отвечает --- Нет данных ---

Добрый день, Константин!
Да можно, для этого, необходимо задать рабочую область командой window таким образом чтобы там умещалось то кол-во символов, которое вам нужно. После выполнения команды readln - проверять что введено (чтобы программа не вылетала при вводе данных разного типа надо отключить проверку ввода компилятором) и если введено не то что надо, либо не устраивает длина просто считать еще раз и т.д.
На экроане это будет выглядить красиво без каких любо ошибок и т.д.


Ответ отправлен: 07.06.2003, 23:24
Отправитель: --- Нет данных ---


Отвечает Zensor

Добрый день, Константин!
Используй h:=Readkey, где h:char;
(см. придложение)

Приложение:

Ответ отправлен: 08.06.2003, 06:42
Отправитель: Zensor


Отвечает _vt

Приветствую Вас, Константин!
Пример:

Приложение:

Ответ отправлен: 08.06.2003, 17:56
Отправитель: _vt


Отвечает Tancho

Добрый день, Константин!
Ну да можно! Пользуйся оператороми ReadKey и case.
Читай вводимый символ и проверяй его ASCII код - отвечает ли
твой требования.

Ответ отправлен: 09.06.2003, 21:33
Отправитель: Tancho


Отвечает Дмитрий

Здравствуйте, Константин!
Выход: не использовать стандартные процедуры read и readln. Просто опрашивайте клавиатуру на предмет нажатия нужных клавиш и добавляйте эти символы в строку. Потом можно будет строку перевести в число. Удачи!


Ответ отправлен: 09.06.2003, 13:40
Отправитель: Дмитрий


Отвечает Dark_Lord

Приветствую Вас, Константин!
var
a:byte;
s:string;
k:byte;
label 1;
begin
1:
readln(s);
val(s,a,k);
if k<>0 goto 1
end.

Ответ отправлен: 08.06.2003, 13:04
Отправитель: Dark_Lord


Отвечает vitya

Доброе время суток, Константин!
Например, ты можешь вводить строчки, а анализировать потом только первый символ.
Или же, что проще - просто вызывать функцию readkey, которая возвращает один символ.

Ответ отправлен: 08.06.2003, 12:02
Отправитель: vitya


Отвечает Tigran K. Kalaidjian

Здравствуйте, Константин!
Можно сделать ввод символа с помощью ассемблерных вставок. Без эха(int21hAH=08h). И контролировать всё, что вводится. Если вводится "запретный" символ, то игнорировать его и не выводить на экран.
В приложении - программа, которая не "воспринимает" ничего, кроме цифр.
Если нужно подробнее - пишите на мыло.

Приложение:

Ответ отправлен: 09.06.2003, 11:13
Отправитель: Tigran K. Kalaidjian


Отвечает X-RayMan

Здравствуйте, Константин!
Что-то я не понял. Это тебе надо ввести число от 0 до 9?
Если да то смотри приложение. Можно ввести только одну цифру от 0 до 9.

Приложение:

Ответ отправлен: 08.06.2003, 01:14
Отправитель: X-RayMan


 Вопрос № 280

Здравствуйте Tibor !
Извините, я не совсем понял, как этим пользоваться.
Как мне кажется прога работает так :
Прога создает тип TScreen, который состоит из двух массивов. В них записывается экран посимвольно.
А потом, когда это понадобится, вызываются символы из массивов и отображаются на экране.
Если я неправильно понял, поправьте и объясните как этим пользоваться.


Приложение:


Вопрос отправлен: 07.06.2003, 23:15
Отправитель: Константин

[Следующий вопрос >>] [Список вопросов]

Отвечает Tibor

>Здравствуйте Tibor !
>Извините, я не совсем понял, как этим пользоваться.
>Как мне кажется прога работает так :
>Прога создает тип TScreen, который состоит из двух массивов. В них записывается экран посимвольно.
>А потом, когда это понадобится, вызываются символы из массивов и отображаются на экране.
>Если я неправильно понял, поправьте и объясните как этим пользоваться.
не совсем правильно ты понял,
массив является прямой ссылкой на адрес в памяти($B800:0000),
формат в котором храняться данные:
первый байт это символ а второй это атрибут этого символа
просто ты можеш сделать прокрутку посредством смещения.
допустим у тебя есть несколько переменных этого типа:
var Screen : TScreen absolute $B800:$0000;
NextS : Tscreen absolute $B800:$00A0;
Save : TScreen;
переменная Screen есть абсолютная ссылка на адрес
следующая NextS это ссылка на тотже адрес только со смещением в 160 байт
тобиш смещение на строку,
таким образом если ты приравняеш их Screen := NextS то получиш на экране смещение на
одну строку, а если предварительно сохранить Save := Screen то потом можно будет
вернуть эту строку.
Вот тебе и скролинг :)
Удачи.

Ответ отправлен: 08.06.2003, 19:23
Отправитель: Tibor


 Вопрос № 282

Здравствуйте ,Tibor.
Вы просили оставить мыло- fil_fm@mail.ru
мой прошлое письмо было таким:
hello ,Tibor.
В своём ответе вы упомянули книгу Зубкова
и сказали что отошлёте если надо.
я заинтересовался этой книгой и прошу её отослать.
Очень благодарен за ответ ,но кроме программирования
LPT хотелось бы знать и железную часть, а именно куда
подключать исполнительные элементы! good luck.



Вопрос отправлен: 07.06.2003, 23:26
Отправитель: filat (filat@neomail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Tibor

Ушло мылом.

Ответ отправлен: 08.06.2003, 19:22
Отправитель: Tibor



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (34)
C / C++ (29)
Perl (7)
Builder / Delphi (18)
Pascal (29)
Basic / VBA (12)
Java / JavaScript (12)
PHP (8)
MySQL / MSSQL (7)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (31)
"Железо" (26)
Поиск информации (15)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (9)
Юристу
Гражданское право (6)
Семейное право (2)
Трудовое право (3)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное