home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 04 / tricks / use.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1990-01-15  |  2.8 KB  |  95 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     UPN.PAS                            *)
  3. (*         (c) 1990 Dietmar Habrik & TOOLBOX              *)
  4. (* ------------------------------------------------------ *)
  5. PROGRAM UseProgram;
  6.  
  7. {$M 4096,0,0}               { reserviert den Stack ...     }
  8.                             { notwendig für exec()-Aufrufe }
  9. USES Dos;
  10.  
  11. CONST
  12.   ProgAnzahl = 3;
  13.  
  14. TYPE
  15.   Bereich    = 1..ProgAnzahl;
  16.   string8    = STRING [8];
  17.   string20   = STRING [20];
  18.  
  19.   ProgRec    = RECORD
  20.                  Aufruf, Verz : string8;
  21.                END;
  22.  
  23.   ProgDefine = ARRAY [Bereich] OF ProgRec;
  24.  
  25. VAR
  26.   Kommando : string20;    { Stringlänge ist abhängig von den
  27.                             einzelnen Parametern des Aufrufs
  28.                             und kann bei Bedarf jederzeit
  29.                             geändert werrden               }
  30.   Directory: string8;
  31.   PD       : ProgDefine;
  32.   i        : BYTE;
  33.  
  34.   PROCEDURE Error(DosError : INTEGER);
  35.   BEGIN
  36.     WriteLn('Systemfehler ...');
  37.     CASE DosError OF
  38.        2 : WriteLn('Datei nicht gefunden');
  39.        3 : WriteLn('Suchweg nicht gefunden');
  40.        5 : WriteLn('Zugriff verweigert');
  41.        6 : WriteLn('Handle nicht definiert/ungültig');
  42.        8 : WriteLn('nicht genügend Platz im Hauptspeicher');
  43.       10 : WriteLn('Umgebungsparameter ungültig');
  44.       11 : WriteLn('ungültiges Befehlsformat');
  45.     END;
  46.     Halt;
  47.   END;
  48.  
  49.   PROCEDURE Init(VAR PD : ProgDefine);
  50.   BEGIN
  51.     WITH PD[1] DO BEGIN
  52.       Aufruf := 'turbo';   { Hier Programmaufruf eintragen }
  53.       Verz   := 'turbo';   { Hier Verzeichnis eintragen    }
  54.     END;
  55.     WITH PD[2] DO BEGIN
  56.       Aufruf := 'tc';
  57.       Verz   := 'tc2';
  58.     END;
  59.     WITH PD[3] DO BEGIN
  60.       Aufruf := 'context';
  61.       Verz   := 'tools';
  62.     END;
  63.   END;
  64.  
  65.   FUNCTION SucheDirectory(K : string20) : string8;
  66.             { lineares Suchen dürfte hier ausreichend sein }
  67.   VAR
  68.     i : BYTE;
  69.   BEGIN
  70.     SucheDirectory := '';    { falls kein Aufruf vorhanden }
  71.     FOR i := 1 TO ProgAnzahl DO
  72.       IF PD[i].Aufruf = K THEN BEGIN
  73.         SucheDirectory := PD[i].Verz;
  74.         Exit;
  75.       END;
  76.   END;
  77.  
  78. BEGIN
  79.   Init(PD);
  80.   Kommando := ParamStr(1);
  81.   Directory := SucheDirectory(Kommando);
  82.   IF Length(Directory) > 0 THEN
  83.     ChDir('C:\' + Directory + '\usl');
  84.   IF paramcount > 1 THEN     { Pararameter zum Programmnamen
  85.                                hinzufügen                  }
  86.     FOR i := 2 TO paramcount DO
  87.       Kommando := Kommando + ' ' + ParamStr(i);
  88.   SwapVectors;
  89.   Exec(GetEnv('COMSPEC'), '/C '+ Kommando);
  90.   SwapVectors;
  91.   IF DosError <> 0 THEN Error(DosError);
  92. END.
  93. (* ------------------------------------------------------ *)
  94. (*                   Ende von USE.PAS                     *)
  95.