[PASCAL] time aftrekken

Pagina: 1
Acties:

  • GeNiTaLiX
  • Registratie: Maart 2004
  • Laatst online: 22:26
Hey een probleempje,

Ik roep de systeemtijd op aan het begin van een programma, en aan 't eind laat ik 'm weer zien.

maar nu is de vraag, hoe haal ik dees van elkaar af

dus eerste ( GetTime(h,m,s,hund); minus de laatste GetTime(h,m,s,hund); )

zodat het laat zien hoe lang het programma over een berekening heeft gedaan.

Ik heb eerst alles apart in een integer gegooid, :'( maar dat werkte voor geen meter, hij gaf steeds zelfde aan.. Iemand een idee ?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
PROGRAM blaat;

USES crt,dos;

VAR x,t,a,b:integer;
    u, m, s, hond : Word;

PROCEDURE start;
BEGIN
 ************** 
   REKENZOOI
 **************
   GetTime(u,m,s,hond);
   WriteLn('Het is nu ',u,':',m,':',s,'.',hond);
   readln;
   start;
END;

BEGIN
  *********
  TEXTZOOI 
 *********

  GetTime(u,m,s,hond);
   WriteLn('Het is nu ',u,':',m,':',s,'.',hond);
  readln;
  start;
END.

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Hmm een beetje google had je al ergens gebracht als ik je dus goed begrijp.

57: How can I calculate the difference between two points of time?
A: This is an unconfirmed answer so be a little careful with it.
But at the very least it shows some interesting information about
Turbo Pascal date/time conventions and how to declare and initialize
typed constants if they are records.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  program TimDifTest;
  uses Dos;
  const a : DateTime
          = (year:1992; month:10; day:24; hour:5; min:29; sec:38);
        b : DateTime 
          = (year:1993; month:11; day:23; hour:6; min:30; sec:51);
  var aLong, bLong, cLong : longint;
      c : DateTime;
  begin
    PackTime (a, aLong);
    PackTime (b, bLong);
    cLong := bLong - aLong;
    UnpackTime (cLong, c);
    writeln (c.year-1980, ' ', c.month, ' ', c.day, ' ', 
              c.hour, ' ', c.min, ' ', c.sec);
  end.

More generally than for dates between 1980 and 2079, or for more
accurate results, the difference between two date/times can be
calculated using Zeller's congruence (see the item "I want code that
gives the weekday of the given date"). First calculate Zeller's for
both the dates, convert them, and the hour, min, and sec into
seconds, subtract, and convert back.

:O

bron
http://borlpasc.narod.ru/english/faqs/calcul.htm

[ Voor 5% gewijzigd door vorlox op 05-10-2004 23:40 ]


Verwijderd

Gebruik als je tijden van elkaar wilt aftrekken dan GetTickCount. GetTickCount levert het aantal ms dat het systeem actief is. Als je de waarde opslaat in een var en daarna de nieuwe waarde opvraagt min de oude waarde, heb je een tijdsverschil. GetTime heeft trouwens geen parameters dus die shit van jouw kan sowieso al niet werken.

VB:

var i, j: Integer;
DeltaTime:Integer;
begin
i:=GetTickCount;
// Blaat
j:=GetTickCount;
deltaTime:=i-j;
end;

  • GeNiTaLiX
  • Registratie: Maart 2004
  • Laatst online: 22:26
welke unit moet ik voor getickcount aanroepen ? ik heb op google gezocht , maar zie alleen delphi dinge

  • Rone
  • Registratie: April 2002
  • Niet online

Rone

Moderator Tweaking
Verwijderd schreef op 05 oktober 2004 @ 23:43:
VB:

var i, j: Integer;
DeltaTime:Integer;
begin
i:=GetTickCount;
// Blaat
j:=GetTickCount;
deltaTime:=i-j;
end;
Ik denk niet dat dat gaat werken aangezien je een string niet in een Integer-variabele kunt zetten.
Dan krijg je hoogstwaarschijnlijk een Unkown Identifier message.


Je kan, zoals eerder vermeldt, wel alle variabelen omzetten naar seconden.
code:
1
t:=(u*3600)+(m*60)+s;


Op die manier weet je na aftrekken het verschil in seconden tussen de twee meetpunten en kun je dat weer terugzetten naar uren, minuten, etc :)

[ Voor 58% gewijzigd door Rone op 06-10-2004 00:24 ]

PC1: 9800X3D + RX 9070 XT
PC2: 5800X3D + RTX 3080