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

  1. Program DosCom;
  2.  
  3. (*--------------------------------------------------------------------------*)
  4. (*
  5.      Programm:     DosCom - Beispiel-Programm fuer das Modul "ExecPgm"
  6.  
  7.      Compiler:     Turbo Pascal 3.0   (MS-DOS)
  8.  
  9.      Autor:        Ulrich Telle
  10.  
  11.      Version:      1.0
  12.  
  13.      Bemerkungen:  Das Modul "ExecPgm" wird in diesem Beispiel-Programm
  14.                    dazu verwendet, einen zweiten DOS-Kommandoprozessor
  15.                    zu laden
  16.                                                                             *)
  17. (*--------------------------------------------------------------------------*)
  18.  
  19. (*$I EXECPGM.PAS *)
  20.  
  21. var
  22.   Parameter_String              : anystr;
  23.   Program_Name                  : asciiz;
  24.   Block_Segment, Para_freigeben : integer;
  25.  
  26. begin
  27.   Para_freigeben := $6C0; (* Ausreichend, um einen zweiten Kommando-        *)
  28.                           (* prozessor zu laden                             *)
  29.                           (* Die Funktionen "MemAvail" und "MaxAvail"       *)
  30.                           (* koennen dazu verwendet werden, die Anzahl      *)
  31.                           (* Paragraphen, die freigegeben werden koennen,   *)
  32.                           (* zu berechnen                                   *)
  33.  
  34.   if Malloc (Para_freigeben, Block_Segment) = 0
  35.     then begin            (* Ist genug Speicher frei ?                      *)
  36.       if Dos_Fehler (Mfree (Block_Segment))
  37.         then Exit;
  38.       end
  39.     else          (* Falls NEIN, Groesse der aktuellen Zuordnung reduzieren *)
  40.       if Dos_Fehler (SetBlock (Para_freigeben))
  41.         then Exit;
  42.   if not ComSpec (Program_Name)
  43.     then begin
  44.            writeln ('*** Kommando-Prozessor nicht gefunden!');
  45.            Exit;  (* Programmende, falls der Name des Kommandoprozessors    *)
  46.          end;     (* (COMSPEC=-Parameter in DOS-Umgebung) nicht gefunden    *)
  47.                   (* werden konnte                                          *)
  48.  
  49. (*
  50. **  Aufruf des zweiten Kommando-Prozessors, solange nicht das Kommando
  51. **  ENDE eingegeben wird
  52. *)
  53.  
  54.   while true do
  55.     begin
  56.       writeln; write ('DOS-Kommando eingeben: ');
  57.       readln (Parameter_String);
  58.       if (Parameter_String = 'ende') or
  59.          (Parameter_String = 'ENDE')
  60.         then Exit;
  61.  
  62. (*
  63. **  Aufbereiten der Parameter-Zeichenkette fuer den Kommando-Prozessor
  64. *)
  65.  
  66.       Parameter_String := '/C ' +  Parameter_String;
  67.       Parameter_String [Length (Parameter_String)+1] := #13;
  68.  
  69. (*
  70. **  Aufruf des zweiten Kommando-Prozessors mit eingegebenem Kommando
  71. *)
  72.  
  73.       if Dos_Fehler (Exec (Program_Name, Parameter_String))
  74.         then writeln ('*** Kommando abgebrochen.');
  75.     end;
  76. end.
  77.