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

> ВНИМАНИЕ!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Консоль и Read
сообщение
Сообщение #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 в конце каждой строки. Но при вводе последнего символа в строке курсор автоматически переностится на новую, а если это делать не на последних символах, то не будет непрерывности. Может быть есть какие-нибудь спецсимволы для переноса курсора на строку вверх? В общем, буду очень благодарен за помощь.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вот так сделай:
program Project1;

{$APPTYPE CONSOLE}

uses crt32;
var
S: array of Char;
I: Integer;

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

s[i] := Readkey; write(s[i]);
until S[I] = '.';

writeln('i = ', i);
readln;
end.


Файл CRT32 - в аттаче, взят из DRKB... На D6 Все прекрасно работает...


Прикрепленные файлы
Прикрепленный файл  crt32.pas ( 26.96 килобайт ) Кол-во скачиваний: 278
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Увы, мне не подойдет. Никаких модулей, никакого асма и т.п. Вроде как все самому надо сделать. Но за модулек спасибо smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Спасибо большущее. Может, и пройдет таким образом. Хотя сильно подозреваю, что меня пошлют, мотивируя это тем, что я таких вещей еще не знаю. Но попробовать стоит. Спасиб yes2.gif
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 21:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name