Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бегущая строка 
:(
    Опции темы
strertkjh
Дата 14.5.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.5.2007

Репутация: нет
Всего: нет



Есть вот такое задание:
Составить программу наблюдении фрагмента потока символьных данных в «бегущей строке» размера N. Входной поток необходимо имитировать либо вводом символьных последовательностей с клавиатуры, либо вводом из заранее заготовленного текстового файла.
Я даже не знаю с чего начать.
PM MAIL   Вверх
Snowy
Дата 14.5.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



Код

uses Crt;

procedure RunningLine(s: string);
var
  i: integer;
begin
  for i := 1 to 80 do s := ' ' + s + ' ';
  repeat
    for i := 1 to Length(s)-80 do
    begin
      GotoXY(1, 1);
      Write(copy(s, i, 80));
      Delay(50);
      if KeyPressed then Exit;
    end;
  until false;
end;

var
  s: string;
begin
  ClrScr;
  Write('Введите строку: ');
  ReadLn(s);
  RunningLine(s);
end.

PM MAIL   Вверх
strertkjh
Дата 14.5.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.5.2007

Репутация: нет
Всего: нет



А нельзя ли небольшое пояснение к программе.
PM MAIL   Вверх
strertkjh
Дата 15.5.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.5.2007

Репутация: нет
Всего: нет



У меня еще вопрос как можно немного замедлить бег строки, а то там прочитать ее очень сложно.
PM MAIL   Вверх
Snowy
Дата 15.5.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



Код

uses Crt;

procedure RunningLine(s: string); // Процедура, выполняющая отрисовку бегущей строки
var
  i: integer;
begin
  for i := 1 to 80 do s := ' ' + s + ' '; // добавляем пробелы в строку - по экрану слева и справа
  repeat // бесконечный цикл прокруток строки
    for i := 1 to Length(s)-80 do // крутим цикл "пробега строки"
    begin
      GotoXY(1, 1); // установить курсор в левый верхний угол
      Write(copy(s, i, 80)); // вывести часть строки, показывая 80 символов, которые влезают на экран
      Delay(50); // пауза 50 миллисекунд. Для замедления увеличить число.
      if KeyPressed then Exit; // завершение по нажатию на клавишу.
    end;
  until false;
end;

var
  s: string;
begin
  ClrScr; // чистим экран
  Write('Введите строку: '); 
  ReadLn(s); // ввод строки
  RunningLine(s); // вызов процедуры прокрутки
end.


Добавлено через 2 минуты и 7 секунд
Цитата(strertkjh @  15.5.2007,  12:02 Найти цитируемый пост)
У меня еще вопрос как можно немного замедлить бег строки, а то там прочитать ее очень сложно.
За это отвечает параметр Delay.
К сожалению Delay работает не везде одинаково.
На более быстрых машинах быстрее.
Я писал в эмуляторе - там значение выдерживается точно.
Без эмулятора строка будет бежать настолько быстрее, насколько быстрее проц.
PM MAIL   Вверх
strertkjh
Дата 15.5.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.5.2007

Репутация: нет
Всего: нет



А можно ли какнибудь убрать курсор который вверху слево мигает?
PM MAIL   Вверх
Snowy
Дата 15.5.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



Стандартными средствами турбопаскаля - нет.
Но можно его убрать в другое место:
Код

      GotoXY(1, 1);
      Write(copy(s, i, 80));
      GotoXY(1, 24);
      Delay(100);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.