home *** CD-ROM | disk | FTP | other *** search
- (*-------------------------------------------------------------------------*)
- (* Programm: DosCom - Beispiel-Programm fuer das Modul "ExecPgm"
-
- Compiler: Turbo Pascal 3.0 (MS-DOS)
-
- Autor: Ulrich Telle
-
- Version: 1.0
-
- Bemerkungen: Das Modul "ExecPgm" wird IN diesem Beispiel-Programm
- dazu verwendet, einen zweiten DOS-Kommandoprozessor
- zu laden *)
- (*-------------------------------------------------------------------------*)
-
- PROGRAM DosCom;
-
- (*$I EXECPGM.PAS *)
-
- VAR
- Parameter_String : anystr;
- Program_Name : asciiz;
- Block_Segment, Para_freigeben : INTEGER;
-
- BEGIN
- Para_freigeben := $6C0; (* Ausreichend, um einen zweiten Kommando- *)
- (* prozessor zu laden *)
- (* Die Funktionen "MemAvail" und "MaxAvail" *)
- (* koennen dazu verwendet werden, die Anzahl *)
- (* Paragraphen, die freigegeben werden koennen, *)
- (* zu berechnen *)
-
- IF Malloc (Para_freigeben, Block_Segment) = 0 THEN
- BEGIN (* Ist genug Speicher frei ? *)
- IF Dos_Fehler (MFree (Block_Segment)) THEN
- Exit;
- END
- ELSE (* Falls NEIN, Groesse der aktuellen Zuordnung reduzieren *)
- IF Dos_Fehler (SetBlock (Para_freigeben)) THEN
- Exit;
- IF NOT ComSpec (Program_Name) THEN
- BEGIN
- WriteLn ('*** Kommando-Prozessor nicht gefunden!');
- Exit; (* Programmende, falls der Name des Kommandoprozessors *)
- END; (* (COMSPEC=-Parameter in DOS-Umgebung) nicht gefunden *)
- (* werden konnte *)
-
- (* Aufruf des zweiten Kommando-Prozessors, solange nicht das Kommando
- ENDE eingegeben wird *)
-
- WHILE TRUE DO
- BEGIN
- WriteLn; Write ('DOS-Kommando eingeben: ');
- ReadLn (Parameter_String);
- IF (Parameter_String = 'ende') OR (Parameter_String = 'ENDE') THEN
- Exit;
-
- (* Aufbereiten der Parameter-Zeichenkette fuer den Kommando-Prozessor *)
-
- Parameter_String := '/C ' + Parameter_String;
- Parameter_String [Length (Parameter_String)+1] := #13;
-
- (* Aufruf des zweiten Kommando-Prozessors mit eingegebenem Kommando *)
-
- IF Dos_Fehler (Exec (Program_Name, Parameter_String)) THEN
- WriteLn ('*** Kommando abgebrochen.');
- END;
- END.