home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* STOPUHR.PAS *)
- (* Genaue Messung von Programmlaufzeiten *)
- (* (c) 1989 Ulrich Telle & TOOLBOX *)
- (* ------------------------------------------------------ *)
- {$M $1000, 0, 0 } { 4 kB Stack, kein Heap }
-
- PROGRAM Stopuhr;
-
- USES Dos, ZeitMess;
-
- VAR
- j : INTEGER; { Schleifenzähler }
- p : INTEGER;
- { Zeiger auf Anfangspos. Extension }
- Start, Stop : SuperZeit; { Anfangs- und Endezeit }
- PgmName, CmdLine : STRING;
- Extension : BOOLEAN;
- { Kennung, ob Extension angegeben }
- BEGIN
- WriteLn('STOPUHR - Messung von Programmlaufzeiten');
- IF ParamCount = 0 THEN BEGIN
- WriteLn;
- Writeln ('Anwendung: STOPUHR programname [parameter]');
- Halt;
- END;
- CmdLine := ''; { Kommandozeile bestimmen }
- IF ParamCount > 1 THEN
- FOR j := 2 TO ParamCount DO
- CmdLine := CmdLine + ParamStr(j) + ' ';
- WriteLn; { Anfangsmeldung }
- WriteLn(' Uhrzeit: ', UhrZeit);
- WriteLn(' Programm: ', ParamStr(1));
- WriteLn(' Parameter: ', CmdLine);
-
- PgmName := ParamStr(1);
- p := Pos('.', PgmName);
- FOR j := p+1 TO Length(PgmName) DO
- { in Großbuchstaben umwandeln }
- PgmName[j] := UpCase(PgmName[j]);
- Extension := p <> 0; { Programmnamen bestimmen }
- IF NOT Extension THEN
- PgmName := ParamStr(1) + '.EXE'
- { Extension .EXE anhängen }
- ELSE { Extension ist angegeben }
- IF (Pos('.EXE', PgmName) = 0) AND
- (Pos('.COM', PgmName) = 0) THEN BEGIN
- WriteLn;
- WriteLn (' *** Es sind nur .EXE oder .COM ',
- 'Programmdateien erlaubt!');
- Halt;
- END;
- ZeitLesen(Start); { 1. Versuch }
- Exec(PgmName, CmdLine);
- ZeitLesen(Stop);
-
- IF NOT Extension AND (DosError = 2) THEN BEGIN
- { Datei nicht gefunden }
- PgmName := ParamStr(1) + '.COM';
- { 2. Versuch mit Extension .COM }
- ZeitLesen(Start);
- Exec(PgmName, CmdLine);
- ZeitLesen(Stop);
- END;
- WriteLn;
- WriteLn(' Uhrzeit: ', Uhrzeit);
- CASE DosError OF
- 0 : WriteLn(' Laufzeit: ',
- ZeitDauerString(Start, Stop),
- ' Millisekunden.');
- 2 : WriteLn(' *** Die Programm-Datei wurde nicht ',
- 'gefunden!');
- 8 : WriteLn(' *** Es ist nicht genügend Speicher ',
- 'verfügbar!');
- ELSE
- WriteLn(' *** Es ist folgender DOS-Fehler ',
- 'aufgetreten: ', DosError);
- END;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von STOPUHR.PAS *)