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

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Консоль и Read
Archvingel
сообщение 8.11.2006 20:28
Сообщение #1


Гость






Доброго времени суток! Неловко даже с такой проблемой соваться, но, видимо, придется. Необходимо сделать программу в консольном режиме. Суть программы неважна - я ее уже сделал. Но вот проблема - ввод у меня задан следующим образом:
Код

var
  S: array of Char;
  I: Integer;

begin
  WriteLn('Input the string: ');
  I := -1;
  repeat
    I := I + 1;
    if I mod 4 = 0 then
      SetLength(S, I + 4);
    Read(S[I]);
  until S[I] = '.';

При этом не удается ввести последовательность больше 254 символов за раз - на 254-ом отображение их прекращается и курсор замирает. Препод требует, чтобы строка не прерывалась при вводе. Естественно, ввести требуется больше 254 символов. Можно ли с этим что-либо сделать? Есть такие мысли, что можно делать ввод построчно, пимпать enter в конце каждой строки. Но при вводе последнего символа в строке курсор автоматически переностится на новую, а если это делать не на последних символах, то не будет непрерывности. Может быть есть какие-нибудь спецсимволы для переноса курсора на строку вверх? В общем, буду очень благодарен за помощь.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
xds
сообщение 9.11.2006 16:08
Сообщение #2


N337
****

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

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


Можно так:
program Project1;

{$APPTYPE CONSOLE}

uses
Windows;

var
StdIn: THANDLE;
DefMode, n: Cardinal;

S: array of Char;
I: Integer;

begin
StdIn := GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(StdIn, DefMode);
SetConsoleMode(
StdIn,
DefMode and not (ENABLE_ECHO_INPUT or ENABLE_LINE_INPUT)
);

WriteLn('Input the string: ');
I := -1;
repeat
I := I + 1;
if I mod 4 = 0 then
SetLength(S, I + 4);
ReadConsole(StdIn, @s[i], 1, n, nil); write(s[i]);
until S[I] = '.';

writeln('i = ', i);

SetConsoleMode(StdIn, DefMode);
readln;
end.


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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