# GÓC SÁNG TẠO > Khu vực lập trình > Pascal/Delphi/Kylix >  [Help] Chạy chữ từ phải sang trái màn hình.

## nhatlun3030

Mình có bài tập pascal này nhưng không làm được! Ai biết thì giúp mình với!
đề bài này:
Viết thủ tục _Chuchay(s,dong)_ nhận đầu vào là xâu _s_ gồm không quá 79 kí tự và biến nguyên _dong_, đưa ra xâu _s_ có dạng chữ chạy ở giữa dòng _dong_. 


cho cám ơn trước nhé!

----------


## ngovanquang12c3

Chữ chạy! Theo bạn thì nó có hiệu ứng gì vậy bạn? Chạy từ trái qua phải ở dòng hay là ...?

----------


## tungcar2084

chạy từ trái qua phải! mà chạy ở dòng thứ n
giúp mình với nhé!

----------


## Lenguyen1508

Bạn vô box pascal , trong box đã từng có topic nói về vấn đề này rồi . Cũng có cả bài giải khá chi tiết .

----------


## hoanggiang212

```
Program HappySoftGroup_Diendantinhoc;
        Uses Crt;
        Var s : String;
            n : Byte;

        Procedure ChayChu(Var s : String; Var dong : Byte);
                Var s1 : String;
                    i : Byte;
        Begin
                s1 := '';
                For i := 80 downto 80 - Length(s) do
                Begin
                        GotoXY(i, dong);
                        s1 := s1 + s[81-i];
                        Write(s1);
                        Delay(100);
                        Clrscr;
                End;

                For i := (80 - Length(s)) downto 1 do
                Begin
                        GotoXY(i, dong);
                        Write(s);
                        Delay(100);
                        Clrscr;
                End;

                For i := Length(s) downto 1 do
                Begin
                        GotoXY(1, dong);
                        Delete(s, length(s)-i, 1);
                        Write(s);
                        Delay(100);
                        Clrscr;
                End;
        End;

BEGIN
        Clrscr;
        Read(s,n);
        ChayChu(s, n);
END.
```

----------


## seoerGBVN

Chữ chạy có liên tục không hay là chạy 1 lần rồi dừng lại không chạy nữa?

----------


## hangdambao00

chữ chạy liên tục anh ạ. e thử viết chương trình như của anh HappySoftGroup nhưng mà không được.

----------


## caole1992

> chữ chạy liên tục anh ạ. e thử viết chương trình như của anh HappySoftGroup nhưng mà không được.


Sao không em! [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG] Đưa Procedure ChayChu vào vòng lặp là nó chạy vô tư luôn. Nếu không có điều kiện dừng thì nó chạy mãi mãi luôn. Kaka [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

*Ví dụ nhá:*
*Chạy Chữ* *Version 1.1*


```
Program HappySoftGroup_Diendantinhoc;
        Uses Crt;
        Var s : String;
            n : Byte;

        Procedure ChayChu(Var s : String; Var dong : Byte);
                Var s1 : String;
                    i : Byte;
        Begin
                s1 := '';
                For i := 80 downto 80 - Length(s) do
                Begin
                        TextColor(Yellow);
                        GotoXY(30, 1);
                        Writeln('Chay Chu Ver 1.1.');
                        TextColor(Red);
                        GotoXY(30, 2);
                        Write('====== o0o ======');
                        GotoXY(i, dong);
                        s1 := s1 + s[81-i];
                        TextColor(5);
                        Write(s1);
                        Delay(100);
                        Clrscr;
                        If KeyPressed then Halt;
                End;

                For i := (80 - Length(s)) downto 1 do
                Begin
                        TextColor(Yellow);
                        GotoXY(30, 1);
                        Writeln('Chay Chu Ver 1.1.');
                        TextColor(Red);
                        GotoXY(30, 2);
                        Write('====== o0o ======');
                        GotoXY(i, dong);
                        TextColor(5);
                        Write(s);
                        Delay(100);
                        Clrscr;
                        If KeyPressed then Halt;
                End;
                s1 := s;
                For i := Length(s) downto 1 do
                Begin
                        TextColor(Yellow);
                        GotoXY(30, 1);
                        Writeln('Chay Chu Ver 1.1.');
                        TextColor(Red);
                        GotoXY(30, 2);
                        Write('====== o0o ======');
                        GotoXY(1, dong);
                        Delete(s1, length(s1)-i, 1);
                        TextColor(5);
                        Write(s1);
                        Delay(100);
                        Clrscr;
                        If KeyPressed then Halt;
                End;
        End;

BEGIN
        Clrscr;
        Write('Nhap text: '); Readln(s);
        Write('Nhap dong: '); Readln(n);
        Repeat
                ChayChu(s, n);
        Until keypressed;
END.
```

----------

