home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 01 / param.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-11-25  |  2.1 KB  |  77 lines

  1. {---------------------------------------------------------------------------}
  2. { Demonstration der zwei Funktionen 'paramcount' und 'paramstr' fuer
  3.   Turbo-Pascal 2.0. Sie ermoeglichen die Uebernahme der Argumente aus der
  4.   CP/M-Befehlszeile.                                                        }
  5. {---------------------------------------------------------------------------}
  6.  
  7. PROGRAM param_demo;
  8.  
  9. TYPE cmdpar = STRING[30];
  10.  
  11. VAR n: INTEGER;
  12.  
  13. {---------------------------------------------------------------------------}
  14. { Ermittlung der Anzahl der angegebenen Parameter:                          }
  15.  
  16. FUNCTION paramcount: INTEGER;
  17.  
  18. CONST delimiter = 32;          { Leerzeichen als Trennzeichen der Parameter }
  19.       bufstart = 128;          { Startadresse des Befehlszeilen-Puffer      }
  20.       bufend = 159;            { Endadresse. }
  21.  
  22. VAR  anz, adr, bis: INTEGER;
  23.  
  24. BEGIN
  25.   anz := 0;
  26.   adr := Succ(bufstart);
  27.   bis := mem[bufstart] + bufstart;
  28.   IF bis > bufend THEN
  29.     bis := bufend;
  30.   WHILE adr <= bis DO
  31.   BEGIN
  32.     IF mem[adr] = delimiter THEN
  33.       anz := Succ(anz);
  34.     adr := Succ(adr);
  35.   END;
  36.   paramcount := anz;
  37. END;
  38.  
  39. {---------------------------------------------------------------------------}
  40. { Uebergibt den Parameter 'nr' an das Pascal-Programm:                      }
  41.  
  42. FUNCTION paramstr (nr: INTEGER): cmdpar;
  43.  
  44. CONST delimiter = 32;
  45.       bufstart = 128;
  46.       bufend = 159;
  47.  
  48. VAR st: cmdpar;
  49.     anz, bis, adr: INTEGER;
  50.  
  51. BEGIN
  52.   adr := Succ(bufstart);
  53.   bis := mem[bufstart] + bufstart;
  54.   IF bis > bufend THEN
  55.     bis := bufend;
  56.   FOR anz := 1 TO nr DO
  57.   BEGIN
  58.     st := '';
  59.     adr := Succ(adr);
  60.     WHILE (mem[adr] <> delimiter) AND (adr <= bis) DO
  61.     BEGIN
  62.       st := st + Chr(mem[adr]);
  63.       adr := Succ(adr);
  64.     END;
  65.   END;
  66.   paramstr := st;
  67. END;
  68.  
  69. {---------------------------------------------------------------------------}
  70.  
  71. BEGIN
  72.   WriteLn('Anzahl der Parameter: ', paramcount:4, ' , ', mem[128]);
  73.   WriteLn('Im einzelnen:');
  74.   FOR n := 1 TO paramcount DO
  75.     WriteLn('Parameter Nr. ', n:2, ': ', paramstr(n));
  76. END.
  77.