home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 08 / hitech / stopuhr.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-06-01  |  2.9 KB  |  82 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     STOPUHR.PAS                        *)
  3. (*          Genaue Messung von Programmlaufzeiten         *)
  4. (*           (c) 1989  Ulrich Telle  &  TOOLBOX           *)
  5. (* ------------------------------------------------------ *)
  6. {$M $1000, 0, 0 }                  { 4 kB Stack, kein Heap }
  7.  
  8. PROGRAM Stopuhr;
  9.  
  10. USES Dos, ZeitMess;
  11.  
  12. VAR
  13.  j                : INTEGER;             { Schleifenzähler }
  14.  p                : INTEGER;
  15.                         { Zeiger auf Anfangspos. Extension }
  16.  Start, Stop      : SuperZeit;     { Anfangs- und Endezeit }
  17.  PgmName, CmdLine : STRING;
  18.  Extension        : BOOLEAN;
  19.                         { Kennung, ob Extension angegeben  }
  20. BEGIN
  21.   WriteLn('STOPUHR  - Messung von Programmlaufzeiten');
  22.   IF ParamCount = 0 THEN BEGIN
  23.     WriteLn;
  24.     Writeln ('Anwendung:  STOPUHR programname [parameter]');
  25.     Halt;
  26.   END;
  27.   CmdLine := '';                 { Kommandozeile bestimmen }
  28.   IF ParamCount > 1 THEN
  29.     FOR j := 2 TO ParamCount DO
  30.       CmdLine := CmdLine + ParamStr(j) + ' ';
  31.   WriteLn;                                { Anfangsmeldung }
  32.   WriteLn('  Uhrzeit:   ', UhrZeit);
  33.   WriteLn('  Programm:  ', ParamStr(1));
  34.   WriteLn('  Parameter: ', CmdLine);
  35.  
  36.   PgmName := ParamStr(1);
  37.   p := Pos('.', PgmName);
  38.   FOR j := p+1 TO Length(PgmName) DO
  39.                              { in Großbuchstaben umwandeln }
  40.     PgmName[j] := UpCase(PgmName[j]);
  41.   Extension := p <> 0;           { Programmnamen bestimmen }
  42.   IF NOT Extension THEN
  43.     PgmName := ParamStr(1) + '.EXE'
  44.                                  { Extension .EXE anhängen }
  45.   ELSE                           { Extension ist angegeben }
  46.     IF (Pos('.EXE', PgmName) = 0) AND
  47.        (Pos('.COM', PgmName) = 0) THEN BEGIN
  48.       WriteLn;
  49.       WriteLn ('  *** Es sind nur .EXE oder .COM ',
  50.                'Programmdateien erlaubt!');
  51.       Halt;
  52.     END;
  53.   ZeitLesen(Start);                           { 1. Versuch }
  54.   Exec(PgmName, CmdLine);
  55.   ZeitLesen(Stop);
  56.  
  57.   IF NOT Extension AND (DosError = 2) THEN BEGIN
  58.                                     { Datei nicht gefunden }
  59.     PgmName := ParamStr(1) + '.COM';
  60.                            { 2. Versuch mit Extension .COM }
  61.     ZeitLesen(Start);
  62.     Exec(PgmName, CmdLine);
  63.     ZeitLesen(Stop);
  64.   END;
  65.   WriteLn;
  66.   WriteLn('  Uhrzeit:   ', Uhrzeit);
  67.   CASE DosError OF
  68.     0 : WriteLn('  Laufzeit:  ',
  69.                 ZeitDauerString(Start, Stop),
  70.                 ' Millisekunden.');
  71.     2 : WriteLn('  *** Die Programm-Datei wurde nicht ',
  72.                 'gefunden!');
  73.     8 : WriteLn('  *** Es ist nicht genügend Speicher ',
  74.                 'verfügbar!');
  75.     ELSE
  76.         WriteLn('  *** Es ist folgender DOS-Fehler ',
  77.                 'aufgetreten: ', DosError);
  78.   END;
  79. END.
  80. (* ------------------------------------------------------ *)
  81. (*               Ende von STOPUHR.PAS                     *)
  82.