Консультация № 159259
31.01.2009, 13:03
0.00 руб.
0 8 2
Здравствуйте!

1) У меня возникает проблема в Борланд Паскале, при использовании процедур read/readln, некоторые строки вида readln(***) просто игнорируются(строка не вводится), но после 2 обращения к ним снова работают. Пробовал очистить буфер обмена, но все равно не получается. Как избежать подобной ситуации?
2) При ис-нии процедуры ChDir('C:') программа не меняет текущую папку(которая находится на диске C) . Как можно это исправить?
Заранее спасибо за ответ.

Обсуждение

Неизвестный
31.01.2009, 13:25
общий
это ответ
Здравствуйте, Dimxmid!
Что касается 2го вопроса попробуйте ChDir('C:\');
Неизвестный
31.01.2009, 13:26
общий
Приведите пример к 1му вопросу.
Неизвестный
31.01.2009, 15:00
общий
s:=readkey;
....
s:=readkey;
....
for i:=1 to n do
read(число);
...
s:=readkey;
for i:=1 to n do
begin
writeln(***)
readln(строка); / 1 строку пропускает, остальные вводит.
end;
Неизвестный
31.01.2009, 15:10
общий
Он не пропускает 1ю строку. Просто в буфере после Вашего цикла, где вводятся числа командой Read() остался символ перевода строки '\n'. Сразу же после 1го цикла поставьте ReadLn;
Код:

for i:=1 to n do read(число);
ReadLn;
...
for i:=1 to n do
begin
writeln(***)
readln(строка); { Ниче не пропускает }
end;


и не надо никаких readkey в этом случае.
Неизвестный
31.01.2009, 15:52
общий
и еще такой случай

ввожу 3 числа(3 read подряд) к примeру '2 2 2 '
затем вызывается readln(s) и s тут же становится ' ' (то есть пробелы с прошлых 3 read'ов)

а readkey мне нужен чтоб символ прочитать, а не для задержки))
Неизвестный
31.01.2009, 16:01
общий
Лучше бы Вы приводили фрагмент кода.
Как я уже писал Выше, после Read() в буфере остается символ перевода строки. Поэтому следующий ReadLn() читает то, что осталось до этого символа. т.е. ' '
Неизвестный
02.02.2009, 13:45
общий
это ответ
Здравствуйте, Dimxmid!

Старайтесь пореже использовать оператор Read. Более надёжен ReadLn, поскольку он вычищает из буфера ввода символ перевода каретки. Даже при циклическом вводе данных я обычно использую ReadLn, чтобы обезопасить себя от проблем подобных Вашей.
давно
Старший Модератор
31795
6196
02.02.2009, 14:36
общий
Цитата: Перенесено из формы ответа
Привидите, пожалуйста, пример программ в которых возникает такая ситуация.
Ответил: Motoden, 3-й класс
Дата отправки: 31.01.2009, 13:18
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа