Помощь - Поиск - Пользователи - Календарь
Полная версия: Просьба помочь разобраться в написании проверки условия.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Виталий_Сигов
Здравствуйте, уважаемые форумчане.
Пишу ограничение, которое запрещает вводить символы кроме русских букв для полей "Наименование товара" и "Страна - экспортер". Но это ограничение срабатывает лишь на 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;
....



Большая просьба помочь.
volvo
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...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.