home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / database / tdb / demo / units06.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-05-05  |  3.2 KB  |  116 lines

  1. { ──────────────────────────────────────────────────────────────── }
  2. {          TESTPROGRAMM SUCHROUTINEN STRINGS / ASTRINGS            }
  3. { ──────────────────────────────────────────────────────────────── }
  4. { Baut einen (unsinnigen) PChar zusammen und sucht darin Worte     }
  5. { mittels StrPos und StrSearch.                                    }
  6. { Dabei wird auch demonstriert, wie auf normale Strings wie auf    }
  7. { PChars zugegriffen werden kann.                                  }
  8. { ──────────────────────────────────────────────────────────────── }
  9. {       (c)  1992  by  Aurora  featuring  M.J. Schwaiger           }
  10. { ──────────────────────────────────────────────────────────────── }
  11. {     History:                                                     }
  12. {  Datum     / Bearb. / Art                                        }
  13. {  5. 5.1992    MS       Implementierung.                          }
  14. { ──────────────────────────────────────────────────────────────── }
  15.  
  16. PROGRAM Units06;
  17.  
  18.  
  19.   USES
  20.     AStrings,
  21.     CRT;
  22.  
  23.   VAR
  24.     Cnt            : INTEGER;
  25.     PC             : PChar;
  26.     Found          : PChar;
  27.  
  28.  
  29.   CONST
  30.     Create1        : STRING = 'Stringanfang ';
  31.     Create2        : STRING = 'Noch ''ne Änderung ... '#0;
  32.     Create3        : STRING = 'Stringende'#0;      { Nullbytes für }
  33.     Search1        : STRING = 'Stringen'#0; { PChar-Kompatibilität }
  34.     Search2        : STRING = 'StringEN'#0;
  35.  
  36.  
  37.   BEGIN
  38.     CLRSCR;
  39.  
  40.     WRITELN (MEMAVAIL);
  41.  
  42.     PC := Nil;
  43.  
  44.     PC := StrPasNew (Create1);
  45.  
  46.     FOR Cnt := 1 TO 3 DO
  47.       StrCat (PC, @Create2 [1]);
  48.                               { Durch das #0 ein simulierter PChar }
  49.  
  50.     FOR Cnt := 1 TO 3 DO
  51.       StrCat (PC, PC);          { 2 ^ 3 = 8 - fache Länge }
  52.  
  53.     StrCat (PC, @Create3 [1]);
  54.  
  55.     FOR Cnt := 1 TO StrLen (PC) DO
  56.       WRITE (StrGetChar (PC, Cnt));
  57.  
  58.     WRITELN (StrGetChar (PC, Cnt + 3000)); { Ungültig - mag er's ? }
  59.  
  60.     Found := StrPos (PC, @Search1 [1]);            { Wird gefunden }
  61.  
  62.     IF Found <> Nil THEN
  63.     BEGIN
  64.       FOR Cnt := 1 TO StrLen (@Search1 [1]) DO
  65.         WRITE (StrGetChar (Found, Cnt));
  66.  
  67.       WRITELN;
  68.     END
  69.     ELSE
  70.       WRITELN ('Suchausdruck nicht gefunden !');
  71.  
  72.     Found := StrPos (PC, @Search2 [1]);      { Wird nicht gefunden }
  73.  
  74.     IF Found <> Nil THEN
  75.     BEGIN
  76.       FOR Cnt := 1 TO StrLen (@Search2 [1]) DO
  77.         WRITE (StrGetChar (Found, Cnt));
  78.  
  79.       WRITELN;
  80.     END
  81.     ELSE
  82.       WRITELN ('Suchausdruck nicht gefunden !');
  83.  
  84.     Found := StrSearch (PC, @Search1 [1]);         { Wird gefunden }
  85.  
  86.     IF Found <> Nil THEN
  87.     BEGIN
  88.       FOR Cnt := 1 TO StrLen (@Search1 [1]) DO
  89.         WRITE (StrGetChar (Found, Cnt));
  90.  
  91.       WRITELN;
  92.     END
  93.     ELSE
  94.       WRITELN ('Suchausdruck nicht gefunden !');
  95.  
  96.     Found := StrSearch (PC, @Search2 [1]);         { Wird diesmal  }
  97.                                                    { auch gefunden }
  98.     IF Found <> Nil THEN
  99.     BEGIN
  100.       FOR Cnt := 1 TO StrLen (@Search2 [1]) DO
  101.         WRITE (StrGetChar (Found, Cnt));
  102.  
  103.       WRITELN;
  104.     END
  105.     ELSE
  106.       WRITELN ('Suchausdruck nicht gefunden !');
  107.     StrDispose (PC);
  108.  
  109.     WRITELN;
  110.  
  111.     WRITELN (MEMAVAIL);
  112.  
  113.     WRITELN;
  114.     WRITELN ('Weiter ...');
  115.     READKEY;
  116.   END. { PROGRAM Units06 }