home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
sonderh1
/
doscom.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1987-12-23
|
3KB
|
77 lines
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.