home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 03 / format / format.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-12-17  |  2.9 KB  |  73 lines

  1. (* ----------------------------------------------------------------------- *)
  2. (*                               FORMAT.PAS                                *)
  3. (* Aufruf des nach FORMATX umbenannten MS-DOS Programms FORMAT. Wurde als  *)
  4. (* zu formatierendes Medium die Festplatte spezifiziert (C:, D:, usw.),    *)
  5. (* wird eine Warnung ausgegeben und eine Bestaetigung verlangt.            *)
  6. (* Der Aufruf:  >FORMAT x:/Option aktiviert dieses Pascal-Programm und     *)
  7. (* bei erfolgreicher Pruefung schliesslich das umbenannte MS-DOS-Programm  *)
  8. (* FORMATX. Bei der Ubersetzung muss die Option "COM-File" gesetzt werden  *)
  9. (* System: Turbo Pascal 3.0  &  MS-DOS                                     *)
  10.  
  11. PROGRAM Format;
  12.  
  13. CONST
  14.   Stack_size = $40;                          (* Groesse des HEAP und Stack *)
  15.   pgm_name   = 'FORMATX ';
  16.  
  17. VAR
  18.   param: STRING[128];
  19.   i, j : INTEGER;
  20.   antw : CHAR;
  21.  
  22. (*$I EXEC4BH.INC *)
  23. (*$I SETBLOCK.INC *)
  24. (*$I ENVIRON.INC *)
  25.  
  26. PROCEDURE error (n: INTEGER);
  27. BEGIN
  28.   Write('  *** FEHLER: ');
  29.   CASE n OF
  30.     1: WriteLn('FORMATX konnte nicht gestartet werden !');
  31.     2: WriteLn('Laufwerkangabe fehlt !');
  32.     3: WriteLn('ungültige Parameter !');
  33.     4: WriteLn('bei Speicherplatzfreigabe !');
  34.   END;
  35. END;
  36.  
  37. BEGIN
  38.   WriteLn;  WriteLn('Sicheres Format   (C) 1987  ',
  39.                     ' B.Born, M.Ceol & PASCAL INT.');
  40.   (* Da den COM-Files beim Laden der gesamte verfuegbare Speicher zuge-
  41.      ordnet wird, muss der unbenutzte Speicher an MS-DOS zurueckgegeben
  42.      werden, ehe ein Tochterprozess gestartet werden kann.                 *)
  43.   IF SetBlock(MaxAvail-Stack_size) = 0 THEN BEGIN
  44.     (* Werte nun die Benutzereingaben aus und pruefe, ob eine Festplatte
  45.        formatiert werden soll. In diesem Fall ist die Warnung auszugeben.
  46.        Das Programm bricht bei Verwendung von impliziten Laufwerksangaben
  47.        aus Sicherheitsgruenden ab.                                         *)
  48.     IF ParamCount = 1 THEN BEGIN
  49.       param := ParamStr(1);
  50.       IF param[2] = ':' THEN BEGIN
  51.         FOR i := 1 TO Length(param) DO param[i] := UpCase(param[i]);
  52.         antw := 'J';           (* wenn nicht C: oder D: wird formatiert !! *)
  53.         IF param[1] >= 'C' THEN BEGIN
  54.           WriteLn;
  55.           Write('Wollen Sie wirklich Ihre Festplatte formatieren (j/n) ? ');
  56.           ReadLn (antw);
  57.         END;
  58.         IF UpCase(antw) = 'J' THEN
  59.           (* Den im Environment mit COMSPEC= spezifizierten Kommandopro-
  60.              zessor COMMAND.COM starten. Die Kommandozeile fuer COMMAND
  61.              muss mit /C beginnen, damit nur dieses eine Kommando ausge-
  62.              fuehrt wird:                                                  *)
  63.           IF exec(EnvironStr('COMSPEC'),
  64.                   Concat('/C',pgm_name,param)) <> 0 THEN error(1);
  65.       END
  66.       ELSE error(2);
  67.     END
  68.     ELSE error(3);
  69.   END
  70.   ELSE error(4);
  71.   WriteLn;
  72. END.
  73.