home *** CD-ROM | disk | FTP | other *** search
- Program DosCom;
-
- (*--------------------------------------------------------------------------*)
- (*
- 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
- *)
- (*--------------------------------------------------------------------------*)
-
- (*$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.