home *** CD-ROM | disk | FTP | other *** search
/ Prima Shareware 3 / DuCom_Prima-Shareware-3_cd1.bin / PROGRAMO / PASCAL / STRINGS / STRTEST.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1991-04-08  |  5.1 KB  |  211 lines

  1. PROGRAM test;
  2.  
  3. {Toto je testovaci program pro rozsirujici operace s retezci, ktere
  4.  jsou obsazeny v jednotce Strings.
  5.  
  6.  
  7.  ExtractForCount
  8.  
  9. Deklarace
  10. target_str := 
  11.   ExtractForCount(source_string, sizeof(target_string, start_pos)
  12.  
  13. Popis:
  14.     Tato funkce p⌐enese 'n' znakû ze zdrojového do cílového
  15. ⌐etêzce. P⌐ená¿ené znaky zaçínají ukazatelem start_pos ve
  16. zdrojovém ⌐etêzci. Po p⌐enesení jsou p⌐íslu¿né znaky vypu¿têny
  17. ze zdrojového ⌐etêzce.
  18.  
  19.   ExtractToChar
  20.  
  21. Deklarace
  22. target_str := 
  23.   ExtractToChar(source_str, sizeof(target_str), search_char)
  24.     
  25. Popis:
  26.     Tato funkce p⌐ená¿í znaky ze zdrojového do cílového
  27. ⌐etêzce aæ do té doby, dokud nenalezne znak stejnÿ s
  28. search_char. Jakmile je tento znak nalezen, p⌐enos skonçí,
  29. p⌐içemæ se search_char nep⌐ená¿í. P⌐enesené znaky jsou vypu¿têny
  30. ze zdrojového ⌐etêzce. 
  31.  
  32.  
  33.   Translate
  34.  
  35. Deklarace
  36.   Translate(str_to_translate, translate_table);
  37.  
  38. Popis:
  39.     Tato procedura ⌐etêzec str_to_translate podle 256-ti
  40. znakové p⌐ekladové tabulky translate_table. P⌐ekladová tabulka
  41. je 256 bytû dlouhá.
  42.  
  43.  
  44.   PadLeft
  45.  
  46. Deklarace
  47.   PadLeft(string, sizeof(string), new_length, pad_char);
  48.  
  49. Popis:
  50.     Tato procedura vkládá znak pad_char na první pozici
  51. ⌐etêzce tak dlouho, dokud se jeho délka nerovná new_length nebo
  52. dokud ⌐etêzec nedosáhne své maximální moæné délky.
  53.  
  54.  
  55.   PadRight
  56.  
  57. Deklarace
  58.   PadRight(string, sizeof(string), new_length, pad_char);
  59.  
  60. Popis:
  61.     Tato procedura vkládá znak pad_char na poslední pozici
  62. ⌐etêzce tak dlouho, dokud se jeho délka nerovná new_length nebo
  63. ⌐etêzec nedosáhne své maximální délky.
  64.  
  65.  
  66.   Uppercase
  67.  
  68. Deklarace
  69.   target_str := Uppercase (source_str);
  70.  
  71. Popis:
  72.     Tato funkce konvertuje kaædÿ znak v rozsahu 'a..z' ze
  73. zdrojového ⌐etêzce source_string na p⌐íslu¿né velké písmeno a
  74. umístí ho do cílového ⌐etêzce target_string. 
  75.  
  76.  
  77.   StringOf
  78.  
  79. Deklarace
  80.   target_str := StringOf (pad_char, string_len);
  81.  
  82. Popis:
  83.     Tato funkce vytvo⌐í ⌐etêzec obsahující pad_char.  }
  84.  
  85.  
  86.  
  87. uses strings,
  88.      crt;
  89.  
  90.  
  91.  
  92. VAR
  93.   str0     : STRING[20];
  94.   v1       : STRING[20];
  95.   str1     : STRING[20];
  96.   v2       : STRING[20];
  97.   str2     : STRING[20];
  98.   v3       : STRING[20];
  99.   str3     : STRING[20];
  100.   v4       : STRING[20];
  101.   table    : STRING[255];
  102.   i        : integer;
  103.  
  104.  
  105.  
  106. BEGIN
  107.   v1 := '12345678901234567890';
  108.   v2 := v1;
  109.   v3 := v1;
  110.   v4 := v1;
  111.   str1 := 'this is STRING 1';
  112.   str2 := '*';
  113.   str3 := 'this is STRING 3';
  114.   WRITELN;
  115.   WRITELN('Testing PadLeft............');
  116.   WRITELN;
  117.   REPEAT
  118.     padleft(str2,sizeof(str2),(length(str2)+1),' ');
  119.     IF (v2 <> '12345678901234567890') OR
  120.        (v3 <> '12345678901234567890') THEN BEGIN
  121.        WRITELN('Error: boundary validation failed');
  122.        HALT;
  123.     END;
  124.     WRITELN('l str2 = ',length(str2):2,'  str2 = [',str2,']');
  125.   UNTIL length(str2) = 20;
  126.   DELAY(3000);
  127.  
  128.  
  129.   WRITELN;
  130.   WRITELN('Testing ExtractForCount.......');
  131.   WRITELN;
  132.   REPEAT
  133.     str3 := ExtractForCount(str2,sizeof(str3),1);
  134.     IF (v2 <> '12345678901234567890') OR
  135.        (v3 <> '12345678901234567890') THEN BEGIN
  136.        WRITELN('Error: boundary validation failed');
  137.        HALT;
  138.     END;
  139.     IF (v3 <> '12345678901234567890') OR
  140.        (v4 <> '12345678901234567890') THEN BEGIN
  141.        WRITELN('Error: boundary validation failed');
  142.        HALT;
  143.     END;
  144.     WRITE('l str3 = ',length(str3):2,'   str3 = [',str3,']');
  145.     WRITELN('l str2 = ',length(str2):2,'   str2 = [',str2,']');
  146.   UNTIL length(str2) = 0;
  147.   DELAY(3000);
  148.  
  149.  
  150.   WRITELN;
  151.   WRITELN('Testing ExtractForCount.......');
  152.   WRITELN;
  153.   str2 := '*';
  154.   padleft(str2,sizeof(str2),20,' ');
  155.   str3 := ExtractForCount(str2,sizeof(str3),25);
  156.   IF (v3 <> '12345678901234567890') OR
  157.      (v4 <> '12345678901234567890') THEN BEGIN
  158.      WRITELN('Error: boundary validation failed');
  159.      HALT;
  160.   END;
  161.   WRITE('l str3 = ',length(str3):2,'   str3 = [',str3,']');
  162.   WRITELN('l str2 = ',length(str2):2,'   str2 = [',str2,']');
  163.   DELAY(3000);
  164.  
  165.  
  166.   str2 := '1 2 3 4 5 6 7 8 9';
  167.   WRITELN;
  168.   WRITELN('Testing ExtractToChar.....');
  169.   WRITELN;
  170.   REPEAT
  171.     str3 := ExtractToChar(str2,sizeof(str3),' ');
  172.     delete(str2,1,1);
  173.     IF (v3 <> '12345678901234567890') OR
  174.        (v4 <> '12345678901234567890') THEN BEGIN
  175.        WRITELN('Error: boundary validation failed');
  176.        HALT;
  177.     END;
  178.     WRITE('l str3 = ',length(str3):2,'   str3 = [',str3,']');
  179.     WRITELN('l str2 = ',length(str2):2,'   str2 = [',str2,']');
  180.   UNTIL length(str3) = 0;
  181.   DELAY(3000);
  182.  
  183.  
  184.   str2 := '!';
  185.   WRITELN;
  186.   WRITELN('Testing PadRight......');
  187.   WRITELN;
  188.   REPEAT
  189.     padright(str2,sizeof(str2),(length(str2)+1),'*');
  190.     IF (v2 <> '12345678901234567890') OR
  191.        (v3 <> '12345678901234567890') THEN BEGIN
  192.        WRITELN('Error: boundary validation failed');
  193.        HALT;
  194.     END;
  195.     WRITELN('l str2 = ',length(str2):2,'   str2 = [',str2,']');
  196.   UNTIL length(str2) = 15;
  197.   DELAY(3000);
  198.  
  199.  
  200.   FOR i := 0 to 255 DO
  201.     table[i] := CHR(ORD(i));
  202.   str0 := '..../....1..../....2';
  203.   table[ORD('.')] := ' ';
  204.   WRITELN;
  205.   WRITELN('Testing Translate.....');
  206.   WRITELN;
  207.   WRITELN('Original STRING   = ',str0);
  208.   translate(str0, table);
  209.   WRITELN('Translated STRING = ',str0);
  210. end.
  211.