IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Просьба помочь разобраться в написании проверки условия.
Виталий_Сигов
сообщение 27.10.2009 16:22
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Здравствуйте, уважаемые форумчане.
Пишу ограничение, которое запрещает вводить символы кроме русских букв для полей "Наименование товара" и "Страна - экспортер". Но это ограничение срабатывает лишь на 1-м поле "Наименование товара", для поля "Страна - экспортер" это ограничение не обрабатывается. И курсор автоматически переходит в поле "Количество товара".

Код

type
tovar=record
naimenovanie:string[30];
strana_exporter:string[30];
data_postavki:string[10];
kolichestvo_tovara:byte;
end;

var
tov:array[1..100] of tovar;
f:file of tovar;
date,str:string;
k,l,n:integer;
i,j:byte;
ch:char;
quit:boolean;
simb:set of char;
smb:set of char;
begin
.....
with tov[i] do begin
simb:=['А'..'Я','а'..'я',' ',#8];
write('Введите наименование товара: ');
naimenovanie:='';
repeat
if keypressed then begin
ch:=readkey;
if ch in simb then begin
write(ch);
naimenovanie:=naimenovanie+ch;
end;
end;
until ch=#13;
writeln;
write('Введите страну-экспортер  : ');
strana_exporter:='';
repeat
if keypressed then begin
ch:=readkey;
if ch in simb then begin
write(ch);
strana_exporter:=strana_exporter+ch;
end;
end;
until ch=#13;
writeln;
smb:=['1'..'9','.',#8];
write('Введите дату поставки       : ');
data_postavki:='';
repeat
if keypressed then begin
ch:=readkey;
if ch in simb then begin
write(ch);
data_postavki:=data_postavki+ch;
end;
end;
until ch=#13;
{$I-}
9:write('Введите количество товара   : '); readln(kolichestvo_tovara);
{$i+}
if (IoResult<>0) or (kolichestvo_tovara<=0) or(kolichestvo_tovara>1000) then begin
writeln('Повтори ввод количества товара !!!');
delay(500);
goto 9;
end
else
writeln;
writeln('Нажмите Enter');readln;
end;
....



Большая просьба помочь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.10.2009 17:18
Сообщение #2


Гость






write('Введите наименование товара: ');
naimenovanie:='';
repeat
if keypressed then begin
ch:=readkey;
if ch in simb then begin
write(ch);
naimenovanie:=naimenovanie+ch;
end;
end;
until ch=#13;
ch := #0; { <--- Вот эту строку добавь везде, где заканчивается цикл until ch = #13 }


Понимаешь, что происходит, да? Закончил ты ввод первого слова, вошел во второй repeat. И что? Ну, не нажата клавиша, а Ch сразу же = #13, этот самый второй цикл тут же и заканчивается. Чтобы это предотвратить, надо сбросить значение Ch...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 14:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"