home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* STRINGS.PAS *)
- (* Unit zur Ausgabe von Strings als laufende Texte *)
- (* (c) 1990 Alfred Jung & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT Strings;
-
- INTERFACE
-
- USES txCrt;
-
- PROCEDURE Text_Schreiben(X, Y, V : WORD; Text : STRING);
- { Text langsam schreiben }
-
- PROCEDURE Text_L(X, Y, V : WORD; Text : STRING);
- { Text von links schieben }
-
- PROCEDURE Text_R(X, Y, V : WORD; Text : STRING);
- { Text von rechts schieben }
-
- PROCEDURE Text_L_Rand(X, Y, V : WORD; Text : STRING);
- { Text vom linken Rand schieben }
-
- PROCEDURE Text_R_Rand(X, Y, V : WORD; Text : STRING);
- { Text vom rechten Rand schieben }
-
- PROCEDURE Text_LR_Schreiben(X, Y, V : WORD;
- Text : STRING);
- { Text von Mitte nach links und rechts schreiben }
-
- PROCEDURE Text_LR_Schieben(X, Y, V : WORD; Text : STRING);
- { Text von Mitte nach links und rechts schieben }
-
- PROCEDURE Laufschrift(X, Y, Z, V : WORD; Text : STRING);
- { Laufschrift von Texten }
-
- PROCEDURE DoppelLaufschrift(X, Y, Z, V : WORD;
- Text1 : STRING;
- K, L, M : WORD;
- Text2 : STRING);
- { Laufschrift von 2 unabhängigen Texten }
-
-
- IMPLEMENTATION
-
- CONST
- R_MAX = 80;
-
- VAR
- i : INTEGER;
- L : STRING;
- R : STRING;
- Laenge : WORD;
- Halbelaenge : INTEGER;
-
- PROCEDURE Text_Schreiben(X, Y, V : WORD; Text : STRING);
- BEGIN
- FOR i := 1 TO Length(Text) DO BEGIN
- GotoXY(X, Y);
- Write(Copy(Text, 1 , i));
- Delay(V);
- END;
- END;
-
- PROCEDURE Text_L(X, Y, V : WORD; Text : STRING);
- BEGIN
- Laenge := Length(Text);
- FOR i := 1 TO Laenge DO BEGIN
- GotoXY(X, Y);
- Write(Copy(Text, Laenge - i + 1, i));
- Delay(V);
- END;
- END;
-
- PROCEDURE Text_R(X, Y, V : WORD; Text : STRING);
- BEGIN
- Laenge := Length(Text);
- FOR i := 1 TO Laenge DO BEGIN
- GotoXY(X + Laenge - i, Y);
- Write(Copy(Text, 1, i));
- Delay(V);
- END;
- END;
-
- PROCEDURE Text_L_Rand(X, Y, V : WORD; Text : STRING);
- BEGIN
- FOR i := 1 TO X - 1 DO Text := ' ' + Text;
- Laenge := Length(Text);
- FOR i := 1 TO Laenge DO BEGIN
- GotoXY(1, Y);
- Write(Copy(Text, Laenge - i + 1, i));
- Delay(V);
- END;
- END;
-
- PROCEDURE Text_R_Rand(X, Y, V : WORD; Text : STRING);
- BEGIN
- FOR i := X + Length(Text) TO R_MAX DO
- Text := Text + ' ';
- Laenge := Length(Text);
- FOR i := 1 TO Length(Text) DO BEGIN
- GotoXY(R_MAX + 1 - i, Y);
- Write(Copy(Text, 1, i));
- Delay(V);
- END;
- END;
-
- PROCEDURE Text_LR_Schreiben(X, Y, V : WORD;
- Text : STRING);
- BEGIN
- HalbeLaenge := 1 + Length(Text) DIV 2;
- FOR i := 1 TO HalbeLaenge DO BEGIN
- GotoXY(X + HalbeLaenge - i, Y);
- Write(Copy(Text, HalbeLaenge - i + 1, i));
- GotoXY(X + HalbeLaenge, Y);
- Write(Copy(Text, HalbeLaenge + 1 , i));
- Delay(V);
- END;
- END;
-
- PROCEDURE Text_LR_Schieben(X, Y, V : WORD; Text : STRING);
- BEGIN
- HalbeLaenge := 1 + Length(Text) DIV 2;
- FOR i := 1 TO HalbeLaenge DO BEGIN
- GotoXY(X + HalbeLaenge - i, Y);
- Write(Copy(Text, 1, i));
- GotoXY(X + HalbeLaenge, Y);
- Write(Copy(Text, HalbeLaenge +
- HalbeLaenge - i + 1, i));
- Delay(V);
- END;
- END;
-
- PROCEDURE Laufschrift(X, Y, Z, V : WORD; Text : STRING);
- VAR
- LText : STRING;
- Lauf : STRING;
- Ende : BOOLEAN;
- Ch : CHAR;
- BEGIN
- Ende := FALSE;
- LText := Text;
- WHILE Length(LText) < (Z - X + Length(Text)) DO
- LText := LText + Text;
- REPEAT
- I := 1;
- REPEAT
- GotoXY(X, Y);
- Lauf := Copy(LText, i, Z - X);
- Write(Lauf);
- Delay(V);
- Inc(i);
- IF KeyPressed THEN Ende := TRUE;
- UNTIL (i = Length(Text)) OR Ende;
- UNTIL Ende;
- WHILE Keypressed DO Ch := ReadKey;
- Ende := FALSE;
- END;
-
- PROCEDURE DoppelLaufschrift(X, Y, Z, V : WORD;
- Text1 : STRING;
- K, L, M : WORD;
- Text2 : STRING);
- VAR
- LText1 : STRING;
- Lauf1 : STRING;
- LText2 : STRING;
- Lauf2 : STRING;
- i, j : WORD;
- Ch : CHAR;
- BEGIN
- LText1 := Text1;
- LText2 := Text2;
- WHILE Length(LText1) < (Z - X + 1 + Length(Text1)) DO
- LText1 := LText1 + Text1;
- WHILE Length(LText2) < (M - K + 1 + Length(Text2)) DO
- LText2 := LText2 + Text2;
- i := 0;
- j := 0;
- REPEAT
- Inc(i);
- GotoXY(X, Y);
- Write(Copy(LText1, i, Z - X));
- Inc(j);
- GotoXY(K, L);
- Write(Copy(LText2, j, M - K));
- Delay(V);
- IF i = Length(Text1) THEN i := 0;
- If j = Length(Text2) THEN j := 0;
- UNTIL KeyPressed;
- WHILE KeyPressed DO Ch := ReadKey;
- END;
-
- END.
- (* ------------------------------------------------------ *)
- (* Ende von STRINGS.PAS *)
-
-