home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* UPN.PAS *)
- (* (c) 1990 Dietmar Habrik & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM UseProgram;
-
- {$M 4096,0,0} { reserviert den Stack ... }
- { notwendig für exec()-Aufrufe }
- USES Dos;
-
- CONST
- ProgAnzahl = 3;
-
- TYPE
- Bereich = 1..ProgAnzahl;
- string8 = STRING [8];
- string20 = STRING [20];
-
- ProgRec = RECORD
- Aufruf, Verz : string8;
- END;
-
- ProgDefine = ARRAY [Bereich] OF ProgRec;
-
- VAR
- Kommando : string20; { Stringlänge ist abhängig von den
- einzelnen Parametern des Aufrufs
- und kann bei Bedarf jederzeit
- geändert werrden }
- Directory: string8;
- PD : ProgDefine;
- i : BYTE;
-
- PROCEDURE Error(DosError : INTEGER);
- BEGIN
- WriteLn('Systemfehler ...');
- CASE DosError OF
- 2 : WriteLn('Datei nicht gefunden');
- 3 : WriteLn('Suchweg nicht gefunden');
- 5 : WriteLn('Zugriff verweigert');
- 6 : WriteLn('Handle nicht definiert/ungültig');
- 8 : WriteLn('nicht genügend Platz im Hauptspeicher');
- 10 : WriteLn('Umgebungsparameter ungültig');
- 11 : WriteLn('ungültiges Befehlsformat');
- END;
- Halt;
- END;
-
- PROCEDURE Init(VAR PD : ProgDefine);
- BEGIN
- WITH PD[1] DO BEGIN
- Aufruf := 'turbo'; { Hier Programmaufruf eintragen }
- Verz := 'turbo'; { Hier Verzeichnis eintragen }
- END;
- WITH PD[2] DO BEGIN
- Aufruf := 'tc';
- Verz := 'tc2';
- END;
- WITH PD[3] DO BEGIN
- Aufruf := 'context';
- Verz := 'tools';
- END;
- END;
-
- FUNCTION SucheDirectory(K : string20) : string8;
- { lineares Suchen dürfte hier ausreichend sein }
- VAR
- i : BYTE;
- BEGIN
- SucheDirectory := ''; { falls kein Aufruf vorhanden }
- FOR i := 1 TO ProgAnzahl DO
- IF PD[i].Aufruf = K THEN BEGIN
- SucheDirectory := PD[i].Verz;
- Exit;
- END;
- END;
-
- BEGIN
- Init(PD);
- Kommando := ParamStr(1);
- Directory := SucheDirectory(Kommando);
- IF Length(Directory) > 0 THEN
- ChDir('C:\' + Directory + '\usl');
- IF paramcount > 1 THEN { Pararameter zum Programmnamen
- hinzufügen }
- FOR i := 2 TO paramcount DO
- Kommando := Kommando + ' ' + ParamStr(i);
- SwapVectors;
- Exec(GetEnv('COMSPEC'), '/C '+ Kommando);
- SwapVectors;
- IF DosError <> 0 THEN Error(DosError);
- END.
- (* ------------------------------------------------------ *)
- (* Ende von USE.PAS *)