Наиль Садреев
Наиль Садреев

помогите пожалуйста с описанием программы. (

uses

GraphABC, System.Windows.Forms;



type

Token =
(FONTNAME,FONTSIZE,SCREEN,BGCOLOR,TITLE,SPEED,S,E);

StringMessage=record

repeats,width:integer;

sColor:Color;

text:string;

end;



var

x, y, i, err, w: integer;

sfontname,stitle:string;

fsize,scrw,scrh,speed_x, speed_ms:integer;

bgclr:Color;

msgs: array of StringMessage;

g:System.Drawing.Graphics;

fl:boolean;

strar:array of string;

ch:array of char := (',');



function GetTokenType(s:string):Token;

var

t:Token;

begin

s := UpperCase(s);

t := Token.FONTNAME;

while t Token.E do

begin

if s = t.ToString() then

begin

result := t;

exit;

end;

Inc(t);

end;

result := t;

end;



procedure ReadFile(filename:string);

var

strline:string;

f: text;

begin

Assign(f, filename);

Reset(f);



while not Eof(f) do

begin

readln(f, strline);

if strline[1] = '%' then continue;



strar := strline.Split(ch);

case GetToKenType(strar[0]) of

Token.FONTNAME: begin

if strar[1].Trim().Length> 0 then sfontname := strar[1];

end;

Token.FONTSIZE: begin

Val(strar[1], fsize, err);

end;

Token.SCREEN: begin

if strar.Length = 3 then

begin

Val(strar[1], scrw, err);

Val(strar[2], scrh, err);

end

else

begin

Val(strar[1], scrw, err);

scrh := scrw;

end;

end;

Token.BGCOLOR: begin

bgclr := Color.FromName(strar[1]);

end;

Token.SPEED: begin

Val(strar[1], speed_x, err);

Val(strar[2], speed_ms, err);

end;

Token.TITLE: begin

stitle := strar[1];

end;

Token.S: begin

if msgs = nil then SetLength(msgs, 1)

else SetLength(msgs,
msgs.Length + 1);

Val(strar[1], msgs[msgs.Length-1].repeats, err);

msgs[msgs.Length-1].sColor := Color.FromName(strar[2]);

msgs[msgs.Length-1].text := strar[3]+' ';

end;

Token.E:

else MessageBox.Show('Ошибка во входном файле. ');

end;



end;

Close(f);

end;



begin



g := System.Drawing.Graphics.FromImage(System.Drawing.Bitmap.Create(1, 1));



ReadFile('input.txt');

setwindowsize(scrw, scrh);

setwindowtitle(stitle);

x := scrw;

y := scrh div 2 - fsize;

SetFontName(sfontname);

SetFontSize(fsize);

Brush.Color := bgclr;



for i := 0 to msgs.Length - 1 do

begin

msgs[i].width :=
Round(g.MeasureString(msgs[i].text,Font.NETFont).Width);

end;



LockDrawing;

while true do

begin

Window.Clear(bgclr);

w := 0;

fl := true;

for i := 0 to msgs.Length - 1 do

begin

if (msgs[i].repeats 0) or (msgs[i].repeats < 0) then

begin

fl := false;

if (x + w < scrw) and (x
+ msgs[i].width + w > 0) then

begin

Font.Color := msgs[i].sColor;

TextOut(x + w, y, msgs[i].text);

end;

w := w + msgs[i].width;

end;

end;

Sleep(speed_ms);

Redraw;

x := x - speed_x;

if x + w < 0 then

begin

for i := 0 to msgs.Length - 1 do

if msgs[i].repeats > 0 then Dec(msgs[i].repeats);

x := scrw;

end;

if fl then break;

end;

exit;

end.

СК
Светик=) Коякова

да, такую на Паскале ты сама точно не осилила бы...

Похожие вопросы
Помогите пожалуйста с программой
Пожалуйста, помогите! ! Составьте или блок-схему или пошаговое описание программ:
Помогите пожалуйста с программой! С++
Помогите составить программу, Снизу описание, неполучается!
Помогите пожалуйста с программой на языке Си. (в описании)
Помогите, пожалуйста, с программой С
Помогите пожалуйста, программу на С++
помогите с программой пожалуйста
Помогите пожалуйста написать программу в C++ с подробным описанием программы.
Помогите пожалуйста с программой на С