Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

задача "бегущая строка" помогите

5.3K
17 октября 2003 года
Barbarossa
5 / / 17.10.2003
Помогите с задачей пожалуйста

"создать программу, которая выводит на экран бегущую строку"

и где почитать

Спасибо!!!
269
20 октября 2003 года
Greenering
892 / / 04.02.2003
Цитата:
Originally posted by Barbarossa
Помогите с задачей пожалуйста

"создать программу, которая выводит на экран бегущую строку"

и где почитать

Спасибо!!!


Первая мысля:
Используем PutImage
Т.е. чего-то там написали и двигаем куда надо
Соответственно, с циклом чтобы бегало по экрану.

5.3K
21 октября 2003 года
Barbarossa
5 / / 17.10.2003
Цитата:
Originally posted by Greenering

Первая мысля:
Используем PutImage
Т.е. чего-то там написали и двигаем куда надо
Соответственно, с циклом чтобы бегало по экрану.



[color=blue]Greenering[/color]
Спасибо!!!
Сорри, только начал учить программирование, да и то по бразильской системе, на заочке дали методички, сказали чтобы решали контрольные и приходили на экзамен - это вся инфа. Ток начал читать - Фаронов "Турбо Паскаль в подлиннике", но пока слабо и вязко.
Программа должна быть без использования CRT. Если каждый символ имеет свой адрес в строке, то нельзя ли сделать такое чтобы текст смещался на один символ к началу, причем первый символ становился бы в конец строки и запустить этот процесс на постоянный повтор до нажатия любой клавиши, символизирующей окончание работы программы?
Есть в этом какой-нть смысл?
Нарыл несколько исходничков, но они слишком круто написаны, мощные и красивые, высмотреть нужный код пока несумел.

269
21 октября 2003 года
Greenering
892 / / 04.02.2003
Цитата:
Originally posted by Barbarossa

Есть в этом какой-нть смысл?


Смысл есть во всем. И еще выход по нажатию клавиши это модуль CRT!

Цитата:
Originally posted by Barbarossa

Нарыл несколько исходничков, но они слишком круто написаны, мощные и красивые, высмотреть нужный код пока несумел.


Делись!

1.6K
21 октября 2003 года
Unexpected
137 / / 09.12.2002
Цитата:
Originally posted by Barbarossa
Программа должна быть без использования CRT. Если каждый символ имеет свой адрес в строке, то нельзя ли сделать такое чтобы текст смещался на один символ к началу, причем первый символ становился бы в конец строки и запустить этот процесс на постоянный повтор до нажатия любой клавиши, символизирующей окончание работы программы?

Режим графический/текстовый?
Если текстовый - то делать вобще нечего. пишешь текст в цикле прямо в видеопамять. По адресу $B800 кажется она начинается для 80х25х16 режима.
2 байта на символ: 1й - символ, 2й - атрибуты(ака цвет сивола/фона)

2Greenering: Можно и через BIOS (собственно CRT как оболочка биоса и работает.)

не помню, как на паскале прерывания оформляются, но на асме это выглядит примерно так:

asm
mov AH ,9 { прерывание 10H, подфункция 9 }
mov AL ,ch { выводимый символ }
mov BH ,0 { страница }
mov BL ,attribute { атрибуты }
mov CX ,1 { фактор повторения }
int $10 { вывод символа }
end

269
21 октября 2003 года
Greenering
892 / / 04.02.2003
Цитата:
Originally posted by Unexpected


asm
mov AH ,9 { прерывание 10H, подфункция 9 }
mov AL ,ch { выводимый символ }
mov BH ,0 { страница }
mov BL ,attribute { атрибуты }
mov CX ,1 { фактор повторения }
int $10 { вывод символа }
end


2 Унэкспектед
Сдается мне что человек
а)с заочки
б)пас видевший в первый раз
в)

Цитата:
Originally posted by Barbarossa Ток начал читать - Фаронов "Турбо Паскаль в подлиннике", но пока слабо и вязко.


В асм не воткнется
Да и преподов напугает
Ты сам как считаешь-то?

1.6K
21 октября 2003 года
Unexpected
137 / / 09.12.2002
Ладно. Другой вариант:

var Regs : Registers;

begin
Regs.AH:=9;
Regs.AL:=ch;
Regs.BH:=0;
Regs.BL:=attribute;
Regs.CX:=1;
Intr($10,Regs);
end;

Хотя с видеопямятью - самое лучшее. И проще, и быстрее, и без лишних заморочек с прерываниями.

type
VideoMem = array[1..25,1..80,1..2] of byte; { 1..25 - y; 1..80 - x }
var
Video : VideoMem absolute $b800:00;


Video[10,20,1]:=Ord(ch); { ASCII-код символа в x=20 и y=10 }
Video[10,20,2]:=Red; { Аттрибуты цвета }


ЗЫ: А за асм (если объяснить сможет) еще и плюс получит, тем более, что далеко не все преподы его знают :-)
269
21 октября 2003 года
Greenering
892 / / 04.02.2003
Цитата:
Originally posted by Unexpected
Ладно. Другой вариант:

var Regs : Registers;

begin
Regs.AH:=9;
Regs.AL:=ch;
Regs.BH:=0;
Regs.BL:=attribute;
Regs.CX:=1;
Intr($10,Regs);
end;

Хотя с видеопямятью - самое лучшее. И проще, и быстрее, и без лишних заморочек с прерываниями.

type
VideoMem = array[1..25,1..80,1..2] of byte; { 1..25 - y; 1..80 - x }
var
Video : VideoMem absolute $b800:00;


Video[10,20,1]:=Ord(ch); { ASCII-код символа в x=20 и y=10 }
Video[10,20,2]:=Red; { Аттрибуты цвета }


ЗЫ: А за асм (если объяснить сможет) еще и плюс получит, тем более, что далеко не все преподы его знают :-)


оСТАЛИСЬ мелочи объяснить асм
и найти коды символов
да что-бы в цикле перебирались и в слова складывались.

1.6K
21 октября 2003 года
Unexpected
137 / / 09.12.2002
Цитата:
Originally posted by Greenering
найти коды символов
да что-бы в цикле перебирались и в слова складывались.

Эээ... не совсем понял, зачем их искать?

если я правильно помню, то должно работать:

var
s: string;
i:integer;

for i:=1 to s[0] на экран -> s

соответственно, если добавить

var j:integer;

for i=1 to s[0]
for j=0 to дофига
writechar(80-j+i,y,s)

----------^^^^^
очень грубо, без проверок, но бежать будет. :-)

5.3K
22 октября 2003 года
Barbarossa
5 / / 17.10.2003
[color=green]Спасибо Всем Большое[/color]
правда пока не втыкаюсь. Времени ноль. Сорри, рано вылез я в топик со своей задачкой. Далеко не все понятно из того что вы, акулы компьютерного пера, написали. Научусь и разберусь. Спасибо еще раз ;)

Unexpected вероятнее всего текстовый, это первая тема "символы и строки"
Greenering сюда я все залил, не помню где брал и возможно не все по теме http://sources.codenet.ru/files/incoming/beguchka.rar

Нарыл еще такой код на http://olimpiada.com.ru/learning.php?lesson=all

uses crt;
var str,st1:string[160];
i,k:byte;
begin
str:='Для получения бумажной копии включите принтер';
st1:=' ';
Textbackground(5); {установка цветв фона экрана}
ClrScr; {очистка экрана}
textcolor(blue); {установка цвета текста}
st1:=st1+str;
For i:=1 to length(st1) do
begin
Delete(st1,1,1);
GoToXY(1,10); {установка текстового курсора в указанное место(1 позиция 10-ой строки)}
Write(st1); {вывод текстовой строки}
Delay(4000); {Задержка выполнения программы}
DelLine {Удаление строки отмеченной курсором}
end
end.

Ток он у меня не запускается на BP и TP
А про CRT наверное я сам придумал, сказали писать в Delphi, а там этот модуль не работает, так я где-то слышал, посему решил, что без него, может и с ним, сорри за дезу.

и еще такой есть (наверное там взял где пишут)
мож вам интересно просто.
-------------
Кидайте на форму Timer и Label. И по событию OnTimer пишите такой код:


procedure TForm1.Timer1Timer(Sender: TObject);
const LengthGoString = 10;
Gostring = 'Этот код был взят с сайта http://www.delphibest.narod.ru,'+
' так же здесь вы найдёте ещё много других исходников! Этот код б';
const i: Integer = 1;
begin
Label1.Caption:=Copy(GoString,i,LengthGoString);
Inc(i);
if Length(GoString)-LengthGostring < i then
i:=1;
end;
265
22 октября 2003 года
Gauss
975 / / 20.02.2000
Слушай, а ты понимаешь разницу между Pascal и Delphi?
если тебе надо на Delhi то ты сам привел нужный тебе код (пример 2).
Что касается 1 напиши что именно говорит не запускаясь!
265
22 октября 2003 года
Gauss
975 / / 20.02.2000
попробовал я тут скомпилить то что ты выложил под Delphi, полный бред, работать не может в принципе! Попробовать код для bp/tp к сожалению не могу, неустановленны
269
22 октября 2003 года
Greenering
892 / / 04.02.2003
Цитата:
Originally posted by Barbarossa
[color=green]Спасибо Всем Большое[/color]
uses crt;
var str,st1:string[160];
i,k:byte;
begin
str:='Для получения бумажной копии включите принтер';
st1:=' ';
Textbackground(5); {установка цветв фона экрана}
ClrScr; {очистка экрана}
textcolor(blue); {установка цвета текста}
st1:=st1+str;
For i:=1 to length(st1) do
begin
Delete(st1,1,1);
GoToXY(1,10); {установка текстового курсора в указанное место(1 позиция 10-ой строки)}
Write(st1); {вывод текстовой строки}
Delay(4000); {Задержка выполнения программы}
DelLine {Удаление строки отмеченной курсором}
end
end.


Короче код приведенный сверху жалкое подобие бегущей строки. Строка бежит один раз, да и тот как то криво.
Но на ее основе можно написать хорошую прогу текстобегучку.
Завтра исходник пришлю.
PS Если время будет прогу писать

5.3K
23 октября 2003 года
Barbarossa
5 / / 17.10.2003
Gauss наверное понимаю, если нижеприведенное верно
Delphi – общепризнанный лидер среди инструментов для создания приложений и систем, функционирующих на платформе Windows. Передовая объектно-ориентированная технология визуального проектирования позволяет отдельным программистам и коллективам разработчиков почуствовать уверенность в возможности полного удовлетворения запросов самых требовательных пользователей и устойчивость своего положения на рынке высоких технологий.
Pascal - это императивный язык программирования высокого уровня, имеющий строгую типизацию данных и переменных. Автором языка Pascal является профессор, директор Института информатики Швейцарской высшей политехнической школы Никлаус Вирт, работавший над созданием этого языка в 1965-1971 гг. Язык программирования Pascal был назван в честь Блеза Паскаля, выдающегося французского математика и философа, жившего в 1623-1662 гг.

а говорит вот что
[Fatal Error] Project1.dpr(6): File not found: 'CRT.dcu'

Я же не говорил, что это нужно компилировать в delphi.Там красивые, на мой взгляд, бегучки.
Здорово, что пример -2- это толковый код, но я пока не втыкаюсь :(

Greenering Спасибо, очень благодарен, если тебя не затруднит...
265
23 октября 2003 года
Gauss
975 / / 20.02.2000
классно, а своими словами можешь?
кто тебе сказал что первый надо компилить под Delphi? он под TP/BP! никакого DCU там в принципе не должно быть, тока не пытайся тот исходник который ты открывал в Delphi компилить под TP/BP, ничего не получится, создай заново прямо в редакторе TP/BP!
а насчет второго кода его точно необходимо переписывать, это-же надо такое придумать - пытаться использовать константу как переменную!
269
24 октября 2003 года
Greenering
892 / / 04.02.2003
Цитата:
Originally posted by Barbarossa
не затруднит...


Держи решение, только компилируй под TP/BP
На край в дельфи под консоль
uses crt;
var str, str2: string;
i,k:byte;
Begin
clrscr;
str:=' Сюда вбиваем текст';
k:=80-length(str);
for i:=1 to k-1 do
str:=str+' ';
repeat
delete(str,1,1);
gotoxy(1,10);
write(str);
delay(4000);
delline;
str2:=copy(str,1,1);
str:=str+str2;
until keypressed;
end.

1.6K
24 октября 2003 года
Unexpected
137 / / 09.12.2002
Цитата:
Originally posted by Barbarossa
[color=blue]Greenering[/color]
Программа должна быть без использования CRT.

:)

269
24 октября 2003 года
Greenering
892 / / 04.02.2003
Цитата:
Originally posted by Barbarossa
А про CRT наверное я сам придумал, сказали писать в Delphi, а там этот модуль не работает, так я где-то слышал, посему решил, что без него, может и с ним, сорри за дезу.


:)

5.3K
26 октября 2003 года
Barbarossa
5 / / 17.10.2003
[color=blue]Greenering[/color]
Величайшее Спасибо!!! Супер, все работает :)

[color=blue]Greenering & Unexpected[/color] рад что повеселил Вас своими ляпами :) научусь и больше не буду пороть чепухи.

Спасибо!!!
269
27 октября 2003 года
Greenering
892 / / 04.02.2003
Цитата:
Originally posted by Barbarossa
[color=blue]Greenering[/color]
Величайшее Спасибо!!! Супер, все работает :)

[color=blue]Greenering & Unexpected[/color] рад что повеселил Вас своими ляпами :) научусь и больше не буду пороть чепухи.

Спасибо!!!



Будь здоров!
Если что обращайся.

7.4K
25 июля 2007 года
malor
69 / / 20.01.2007
Набрал прогу из книги "Последовательные интерфейсы ПК. Практика программирования" (Павел Агуров, BHV, 2005) со стр. 100-101:
Код:
uses
  SysUtils, Crt;

var
 B:Byte;

begin                { TODO -oUser -cConsole Main : Insert code here }
  WriteLn('Передача байта через сервис BIOS');
  WriteLn('Порт COM1');

  Asm
    Mov Ah,0
    Mov Dx,0
    Mov Al,227
    INT 14H
  End;

  While not KeyPressed do begin
   Write('ВВедите байт:'); ReadLn(B);
    Asm
     Mov Ah,1
     Mov Dx,0
     Mov Al,B
     INT 14H
    End;
  end;
end.
При попытке компиляции:
[Fatal Error] Byte.dpr(7): File not found: 'Crt.dcu'

Что делать?

Delphi 7
4.6K
25 июля 2007 года
SerG1nho
72 / / 30.10.2006
Вот что я предлагаю.
Всё просто -

Код:
uses crt,strings;
var  S:array[0..79] of Char;
i:integer;
g:integer;
begin
clrscr;
write('Vvedite stroky:');
readln(S);
clrscr;
g:=2;
     repeat
           gotoxy(g,1);
           for i:=0 to StrLen(S) do
           write(S);
           gotoxy(g-1,1);
           write(' ');
           g:=g+1;
           delay(20000);
     until keypressed;
end.


А если надо справа налево, то

 
Код:
g:=80-strlen(S);
     repeat
           gotoxy(g,1);
           for i:=0 to StrLen(S) do
           write(S);
           gotoxy(g+strlen(s),1);
           write(' ');
           g:=g-1;
           delay(20000);
     until keypressed;


...вот так. Второй вариант не проверял, могу ошибаться. А вот первый работает 100%.
1.9K
18 октября 2007 года
max_dark
256 / / 11.11.2005
Цитата:
[Fatal Error] Byte.dpr(7): File not found: 'Crt.dcu'

Что делать?

Delphi 7



В Delphi нет модуля CRT...
Это чудо надо компилить под Turbo Pascal
Однако в TP нет модуля SysUtils... Да и не нужен он здесь

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог