home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 11 / titel / strings.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1990-10-05  |  5.2 KB  |  198 lines

  1. (* ------------------------------------------------------ *)
  2. (*                      STRINGS.PAS                       *)
  3. (*    Unit zur Ausgabe von Strings als laufende Texte     *)
  4. (*            (c) 1990 Alfred Jung & TOOLBOX              *)
  5. (* ------------------------------------------------------ *)
  6. UNIT Strings;
  7.  
  8. INTERFACE
  9.  
  10. USES txCrt;
  11.  
  12.   PROCEDURE Text_Schreiben(X, Y, V : WORD; Text : STRING);
  13.     { Text langsam schreiben }
  14.  
  15.   PROCEDURE Text_L(X, Y, V : WORD; Text : STRING);
  16.     { Text von links schieben }
  17.  
  18.   PROCEDURE Text_R(X, Y, V : WORD; Text : STRING);
  19.     { Text von rechts schieben }
  20.  
  21.   PROCEDURE Text_L_Rand(X, Y, V : WORD; Text : STRING);
  22.     { Text vom linken Rand schieben }
  23.  
  24.   PROCEDURE Text_R_Rand(X, Y, V : WORD; Text : STRING);
  25.     { Text vom rechten Rand schieben }
  26.  
  27.   PROCEDURE Text_LR_Schreiben(X, Y, V : WORD;
  28.                               Text    : STRING);
  29.     { Text von Mitte nach links und rechts schreiben }
  30.  
  31.   PROCEDURE Text_LR_Schieben(X, Y, V : WORD; Text : STRING);
  32.     { Text von Mitte nach links und rechts schieben }
  33.  
  34.   PROCEDURE Laufschrift(X, Y, Z, V : WORD; Text : STRING);
  35.     { Laufschrift von Texten }
  36.  
  37.   PROCEDURE DoppelLaufschrift(X, Y, Z, V : WORD;
  38.                               Text1      : STRING;
  39.                               K, L, M    : WORD;
  40.                               Text2      : STRING);
  41.     { Laufschrift von 2 unabhängigen Texten }
  42.  
  43.  
  44. IMPLEMENTATION
  45.  
  46. CONST
  47.   R_MAX       = 80;
  48.  
  49. VAR
  50.   i           : INTEGER;
  51.   L           : STRING;
  52.   R           : STRING;
  53.   Laenge      : WORD;
  54.   Halbelaenge : INTEGER;
  55.  
  56.   PROCEDURE Text_Schreiben(X, Y, V : WORD; Text : STRING);
  57.   BEGIN
  58.     FOR i := 1 TO Length(Text) DO BEGIN
  59.       GotoXY(X, Y);
  60.       Write(Copy(Text, 1 , i));
  61.       Delay(V);
  62.     END;
  63.   END;
  64.  
  65.   PROCEDURE Text_L(X, Y, V : WORD; Text : STRING);
  66.   BEGIN
  67.     Laenge := Length(Text);
  68.     FOR i := 1 TO Laenge DO BEGIN
  69.       GotoXY(X, Y);
  70.       Write(Copy(Text, Laenge - i + 1, i));
  71.       Delay(V);
  72.     END;
  73.   END;
  74.  
  75.   PROCEDURE Text_R(X, Y, V : WORD; Text : STRING);
  76.   BEGIN
  77.     Laenge := Length(Text);
  78.     FOR i := 1 TO Laenge DO BEGIN
  79.       GotoXY(X + Laenge - i, Y);
  80.       Write(Copy(Text, 1, i));
  81.       Delay(V);
  82.     END;
  83.   END;
  84.  
  85.   PROCEDURE Text_L_Rand(X, Y, V : WORD; Text : STRING);
  86.   BEGIN
  87.     FOR i := 1 TO X - 1 DO Text := ' ' + Text;
  88.     Laenge := Length(Text);
  89.     FOR i := 1 TO Laenge DO BEGIN
  90.       GotoXY(1, Y);
  91.       Write(Copy(Text, Laenge - i + 1, i));
  92.       Delay(V);
  93.     END;
  94.   END;
  95.  
  96.   PROCEDURE Text_R_Rand(X, Y, V : WORD; Text : STRING);
  97.   BEGIN
  98.     FOR i := X + Length(Text) TO R_MAX DO
  99.       Text := Text + ' ';
  100.     Laenge := Length(Text);
  101.     FOR i := 1 TO Length(Text) DO BEGIN
  102.       GotoXY(R_MAX + 1 - i, Y);
  103.       Write(Copy(Text, 1, i));
  104.       Delay(V);
  105.     END;
  106.   END;
  107.  
  108.   PROCEDURE Text_LR_Schreiben(X, Y, V : WORD;
  109.                               Text    : STRING);
  110.   BEGIN
  111.     HalbeLaenge := 1 + Length(Text) DIV 2;
  112.     FOR i := 1 TO HalbeLaenge DO BEGIN
  113.       GotoXY(X + HalbeLaenge - i, Y);
  114.       Write(Copy(Text, HalbeLaenge - i + 1, i));
  115.       GotoXY(X + HalbeLaenge, Y);
  116.       Write(Copy(Text, HalbeLaenge + 1 , i));
  117.       Delay(V);
  118.     END;
  119.   END;
  120.  
  121.   PROCEDURE Text_LR_Schieben(X, Y, V : WORD; Text : STRING);
  122.   BEGIN
  123.     HalbeLaenge := 1 + Length(Text) DIV 2;
  124.     FOR i := 1 TO HalbeLaenge DO BEGIN
  125.       GotoXY(X + HalbeLaenge - i, Y);
  126.       Write(Copy(Text, 1, i));
  127.       GotoXY(X + HalbeLaenge, Y);
  128.       Write(Copy(Text, HalbeLaenge +
  129.                        HalbeLaenge - i + 1, i));
  130.       Delay(V);
  131.     END;
  132.   END;
  133.  
  134.   PROCEDURE Laufschrift(X, Y, Z, V : WORD; Text : STRING);
  135.   VAR
  136.     LText : STRING;
  137.     Lauf  : STRING;
  138.     Ende  : BOOLEAN;
  139.     Ch    : CHAR;
  140.   BEGIN
  141.     Ende  := FALSE;
  142.     LText := Text;
  143.     WHILE Length(LText) < (Z - X + Length(Text)) DO
  144.       LText := LText + Text;
  145.     REPEAT
  146.       I := 1;
  147.       REPEAT
  148.         GotoXY(X, Y);
  149.         Lauf := Copy(LText, i, Z - X);
  150.         Write(Lauf);
  151.         Delay(V);
  152.         Inc(i);
  153.         IF KeyPressed THEN Ende := TRUE;
  154.       UNTIL (i = Length(Text)) OR Ende;
  155.     UNTIL Ende;
  156.     WHILE Keypressed DO Ch := ReadKey;
  157.     Ende := FALSE;
  158.   END;
  159.  
  160.   PROCEDURE DoppelLaufschrift(X, Y, Z, V : WORD;
  161.                               Text1      : STRING;
  162.                               K, L, M    : WORD;
  163.                               Text2      : STRING);
  164.   VAR
  165.     LText1 : STRING;
  166.     Lauf1  : STRING;
  167.     LText2 : STRING;
  168.     Lauf2  : STRING;
  169.     i, j   : WORD;
  170.     Ch     : CHAR;
  171.   BEGIN
  172.     LText1 := Text1;
  173.     LText2 := Text2;
  174.     WHILE Length(LText1) < (Z - X + 1 + Length(Text1)) DO
  175.       LText1 := LText1 + Text1;
  176.     WHILE Length(LText2) < (M - K + 1 + Length(Text2)) DO
  177.       LText2 := LText2 + Text2;
  178.     i := 0;
  179.     j := 0;
  180.     REPEAT
  181.       Inc(i);
  182.       GotoXY(X, Y);
  183.       Write(Copy(LText1, i, Z - X));
  184.       Inc(j);
  185.       GotoXY(K, L);
  186.       Write(Copy(LText2, j, M - K));
  187.       Delay(V);
  188.       IF i = Length(Text1) THEN i := 0;
  189.       If j = Length(Text2) THEN j := 0;
  190.     UNTIL KeyPressed;
  191.     WHILE KeyPressed DO Ch := ReadKey;
  192.   END;
  193.  
  194. END.
  195. (* ------------------------------------------------------ *)
  196. (*                  Ende von STRINGS.PAS                  *)
  197.  
  198.