home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / pastrick / setmaxen / setmax.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1991-12-04  |  1.8 KB  |  72 lines

  1. (* ------------------------------------------------- *)
  2. (*                     SETMAX.PAS                    *)
  3. (*           Flexible Environment-Variablen          *)
  4. (*         (c) 1991 Timo Becker & DMV-Verlag         *)
  5. (* ------------------------------------------------- *)
  6. {$A+,B-,D+,E-,F-,I-,L-,N-,O-,R-,S-,V-}
  7. {$M 1024,0,0}
  8.  
  9. PROGRAM SetMax;
  10.  
  11. USES Dos;
  12.  
  13. CONST
  14.   Separator = '°';       (* Chr(#248) *)
  15.  
  16. VAR
  17.   Segment, Offset,
  18.   Child, Mark, Mem_ : WORD;
  19.   Datei             : FILE OF CHAR;
  20.   Add, Name         : BOOLEAN;
  21.   C, C2             : CHAR;
  22.  
  23. BEGIN
  24.   Segment := PrefixSeg;
  25.   REPEAT
  26.     Child   := Segment;
  27.     Segment := MemW[Child:$16]
  28.   UNTIL Segment = Child;
  29.   Segment := MemW[Segment:$2C];
  30.   Assign(Datei, ParamStr(1));
  31.   Reset(Datei);
  32.   IF (IOResult <> 0) OR (ParamCount = 0) THEN Halt(1);
  33.   Read(Datei, C);
  34.   Add := (C = '+');
  35.   IF Add THEN Read(Datei, C);
  36.   C := UpCase(C);
  37.   IF C IN ['A'..'Z'] THEN BEGIN
  38.     Read(Datei, C2);
  39.     IF C2 = Separator THEN Mark := Ord(C);
  40.   END;
  41.   Reset(Datei);
  42.   Offset := 0;
  43.   Mem_   := 0;
  44.   REPEAT
  45.     Name := NOT BOOLEAN(Lo(Mem_));
  46.     Mem_ := MemW[Segment:Offset];
  47.     Inc(Offset)
  48.   UNTIL (Mem_ = 0) OR Name AND (Mem_ = Mark);
  49.   Dec(Offset, Ord(Add)+Ord(Name));
  50.   IF Add THEN Seek(Datei, 3);
  51.   Name := TRUE;
  52.   WHILE NOT Eof(Datei) DO BEGIN
  53.     Read(Datei, C);
  54.     IF NOT (C IN [#9, #10, #13, ' ']) THEN BEGIN
  55.       IF Name THEN
  56.         IF C = '=' THEN Name := FALSE
  57.                    ELSE C    := UpCase(C);
  58.       IF C = Separator THEN BEGIN
  59.         C    := #0;
  60.         Name := True
  61.       END;
  62.       Mem[Segment:Offset] := Ord(C);
  63.       Inc(Offset);
  64.     END;
  65.   END;
  66.   MemW[Segment:Offset] := 0;
  67.   Close(Datei);
  68. END.
  69. (* ------------------------------------------------- *)
  70. (*               Ende von SETMAX.PAS                 *)
  71.  
  72.