Другие языки программирования и технологии

вопрос для профессионалов (PASCAL)

Итак, есть работающая с файлами программа, имеет вот такую структуру: program imya (input,output); uses CRT; var a,b,c:integer; begin assign (input, 'input.txt'); {-$I} reset (input); {+$I} read (a,b); writeln('vvedite C'); readln(c); {хочу читать с клавиатуры, однако при этом происходит считывание файла, нужно использовать другую процедуру} assign (output,'output.txt'); rewrite(output); write(c); readkey; end. можете предложить альтернативу readln
Серый Ганин
Серый Ганин
3 774
а закрыть файл пробовал?
close(input.txt);
а потом читай с клавы
Сергей Трапезников
Сергей Трапезников
2 741
Лучший ответ
Серый Ганин пробовал!! не работает!
Серый Ганин ошибка чтение закрытого файла
Сергей Трапезников close(input);
writeln('vvedite C');
readln(c); {хочу читать с клавиатуры, однако при этом происходит считывание файла, нужно использовать другую процедуру}
reset(input);
assign (output,'output.txt');
rewrite(output);
write(c,'+',a,b);//в аутпуте будет введенное число + два те что из файла))) эт я для проверки
close(input);
close(output);
Серый Ганин program imya;
uses CRT;
var a,b,c:integer; input,output:text;
begin
assign (input, 'input.txt');
{-$I}
reset (input);
{+$I}
read (input,a,b);
close(input);
writeln('vvedite C');
readln(c);
assign (output,'output.txt');
rewrite(output);
write(output,c);
close(output);
readkey;
end.

так прога работает, но в ней куча строк относительно файлов..
а в структуре, которую я использую по умолчанию стоят файлы..

и ps зачем 2 close(input) ?
В ересь впал, брат мой! Ты всё делаешь, чтобы открыть текстовый файл, а потом удивляешься, а чего это у тебя вместо клавиатуры текстовый файл читается?

В общем, выкинь всё, что касается инпутов-аутпутов

program imya;
uses CRT;
var a,b,c:integer;
begin
read (a,b);
writeln('vvedite C')
Вот так будет работать.
Серый Ганин я интересовался конкретной структурой... мне интересно, возможно ли при идентификации программы на работу с файлами сделать принудительный ввод с клавиатуры

я в ересь не впал! это вполне осознанный вопрос
Серый Ганин ps

program imya;
uses CRT;
var a,b,c:integer; input,output:text;
begin
assign (input, 'input.txt');
{-$I}
reset (input);
{+$I}
read (input,a,b);
close(input);
writeln('vvedite C');
readln(c);
assign (output,'output.txt');
rewrite(output);
write(output,c);
close(output);
readkey;
end.

так прога работает, но эта стректура МЕНЯ НЕ ИНТЕРЕСУЕТ!!!!
Всё потому, что ты перенаправляешь потоки входных данных с консоли (по умолчанию) в файл!
Чтобы этого избежать убери строки:
assign (input, 'input.txt');
{-$I}
reset (input);
{+$I}
Чтобы видеть результат работы программы, поток данных output тоже не нужно переопределять!
Серый Ганин т.е. мы бросаем файлы на произвол....и постоянно читаем клавиатуру... это не совсем такой выход, который я имел ввиду...

единственное что после этого следует, это то что нужно пользоваться клавиатурой и выводить на экран информацию ДО направление потока входных данных на файл

writeln('vvedite C'); {выводится на экран}
readln(c); {ввод с клавиатуры}
assign (input, 'input.txt');
{-$I}
reset (input);
{+$I}
read (a,b); {ввод с файла}
assign (output,'output.txt');
rewrite(output);
write(c); {запись в файл}
readkey;
Во-первых непонятно зачеи uses CRT
и далее зачеи переменные A,B

Кажется понял
Проверьте откуда читаете ABC случайно ли не из инпут файла.
READ(input,a,b,c);
Серый Ганин все переменные уже читаются из файла!!!
мне нужно найти альтернативу readln чтобы порчитать с клавиатуры

(проверяйте код программы, он рабочий!!!!)
Я не поняла, зачем ты отключил директиву { $ I -}, а затем подключил ее.
Не понятен смысл отключения, эта директива никак не мешает процедуре reset (input);
Директива { $ I +} устанавливается по умолчанию.
Может, лучше не трогать ее (в смысле, не отключать) ?
Alisher Xusenov он имел ввиду что начинается отлов ошибок чения файла, и заканчивается))) всё верно вроде
Евгений Засухин Я добавила и поменяла:
var
input:text;
. .
begin
. .
rewrite(input);
. .
end.
Ввод с клавиатуры пошел
Почем видно, что читает из файла? При считывании из файла ведь указывается переменная типа файла и переменная в которую будет читать. А "с" вроде как независима.

Хотя пока не разбирался, это так беглый взгляд. Спать охота. Завтра посмотрю если еще будет интересовать мое мнение.
ОИ
Оспанов Иван
20 142
Серый Ганин мнение интересует!
программа настроена на работу с файлами ,поэтому файловые переменные можно опустить
хочу читать с клавиатуры, однако при этом происходит считывание файла, нужно использовать другую процедуру----
не должно быть так!
чтобы происходило считывание из файла нужно ввсети
readln(anyfile,anyvar).
так он должен с клавиатуры считывать на сколько я помню ещё паскаль
Вовчан )))))
Вовчан )))))
4 746
Серый Ганин друг мой, проверь код программы!!! он работает!!!!но только А , Б, С читает ИЗ файла!!!
мне интересно,, возможно ли реализовать при такой структуре построения программы чтение с клавиатуры (в моем случае чтение переменной С)
Паскаля не помню, но ставлю на то, что в результате какого-то шаманства файл отправляется в стдин.