home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 04 / doscom.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-03-13  |  2.6 KB  |  68 lines

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