/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Stopur
Fra : Nils Thøger Møller


Dato : 01-03-03 17:33

Hvordan laver jeg et stopur, der skriver tiden ud på en Label1.Caption ?
(nemt nok, er lavet)
Koden skal være i en timer, som tændes og slukkes fra en knap. (nemt nok,
det er lavet)
Uret skal måle i timer, minutter, sekunder og millisekunder (00:00:00:00)

Jeg bruger Delphi 3

Hilsen
Nils






 
 
Thomas Eg Jørgensen (01-03-2003)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 01-03-03 21:44


"Nils Thøger Møller" <bentbit@hotmail.com> skrev i en meddelelse
news:b3qnat$5d8$1@sunsite.dk...
> Uret skal måle i timer, minutter, sekunder og millisekunder (00:00:00:00)

Hvis du har din tid i TDateTime så brug funktionerne HourOf, MinuteOf,
SecondsOf og så vidt jeg husker MSecondOf. Det skal måske lige nævnes at jeg
bruger D6 og jeg ved ikke om disse funktioner er i D3. Hvis de ikke er så
kan du finde de forskellige dele ud fra DecodeDatetime functionen.

F.eks. kunne det se ud som:

TidStr:=IntToStr(HourOf(MinTid))+':'+IntToStr(MinuteOf(MinTid))...osv

Håber det hjælper lidt...

MVH
Thomas



Nils Thøger Møller (01-03-2003)
Kommentar
Fra : Nils Thøger Møller


Dato : 01-03-03 22:12

Hej Thomas

Dette virker fint, men har dog stadig et spørgsmål.

procedure TForm1.Timer1Timer(Sender: TObject);
var
Present: TDateTime;
Hour, Min, Sec, MSec: Word;
begin
Present:= Now;
DecodeTime(Present, Hour, Min, Sec, MSec);
Label1.Caption := IntToStr(MSec);
Label2.Caption := IntToStr(Sec);
Label3.Caption := IntToStr(Min);
Label4.Caption := IntToStr(Hour);
end;

Det bliver ikke udlæst som 22:06:09:21 men som 22:6:9:210 hvordan sætter man
specifik format på ?
Jeg ved at FloatToStrF kan gøre det, men ikke på en integer.

Med venlig hilsen
Nils



"Thomas Eg Jørgensen" <thomas@kontorbutikken.dk> wrote in message
news:b3r5sf$p6u$1@sunsite.dk...
>
> "Nils Thøger Møller" <bentbit@hotmail.com> skrev i en meddelelse
> news:b3qnat$5d8$1@sunsite.dk...
> > Uret skal måle i timer, minutter, sekunder og millisekunder
(00:00:00:00)
>
> Hvis du har din tid i TDateTime så brug funktionerne HourOf, MinuteOf,
> SecondsOf og så vidt jeg husker MSecondOf. Det skal måske lige nævnes at
jeg
> bruger D6 og jeg ved ikke om disse funktioner er i D3. Hvis de ikke er så
> kan du finde de forskellige dele ud fra DecodeDatetime functionen.
>
> F.eks. kunne det se ud som:
>
> TidStr:=IntToStr(HourOf(MinTid))+':'+IntToStr(MinuteOf(MinTid))...osv
>
> Håber det hjælper lidt...
>
> MVH
> Thomas
>
>



Nils Thøger Møller (01-03-2003)
Kommentar
Fra : Nils Thøger Møller


Dato : 01-03-03 22:19

Hej igen

Kan man lave om, så den tæller tiden fra 00:00:00:00 og ikke fra Dansk
normal tid.
Da det ska lbruges som stopur.

Hilsen
Nils



Thomas Eg Jørgensen (02-03-2003)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 02-03-03 09:56


"Nils Thøger Møller" <bentbit@hotmail.com> skrev i en meddelelse
news:b3r82f$bm3$1@sunsite.dk...
> Kan man lave om, så den tæller tiden fra 00:00:00:00 og ikke fra Dansk
> normal tid.

Ja det kan du godt.

Prøv at kikke på kommandoen GetTickCount. Denne kommando returnere antallet
af millisekunder siden windows blev tændt. Det du så gør er at gemme dette
tal(af typen dword så vidt jeg husker) og så sammenligne det med
GetTickCount når brugeren klikker stop. Forskellen mellem de to repræsentere
så tiden i millisekunder.

Ang. dit formateringsproblem så kan jeg ikke lige huske nogle konkrete
formaterings funktioner(måske nogen andre kan?). Men ellers kan du jo checke
og så selv tilpasse længden, noget i retning af:

var
str1: string;
int1: integer;
begin
int1:=HourOf(Now());
if length(IntToStr(int1)) < 2 then
str1:='0'+IntToStr(int1)
else
str1:=IntToStr(int1);
showmessage(str1);
end;

Det er en omvej, men den virker...Men prøv at kikke lidt i hjælp, måske der
er en funktion al'a IntToStrF...

MVH
Thomas



Claus Christiansen (02-03-2003)
Kommentar
Fra : Claus Christiansen


Dato : 02-03-03 12:40

"Thomas Eg Jørgensen" <thomas@kontorbutikken.dk> wrote in
news:3e61c670$0$245$bc7fd3c@news.sonofon.dk:

>
> "Nils Thøger Møller" <bentbit@hotmail.com> skrev i en meddelelse
> news:b3r82f$bm3$1@sunsite.dk...
>> Kan man lave om, så den tæller tiden fra 00:00:00:00 og ikke fra
>> Dansk normal tid.
>
> Ja det kan du godt.
>
> Prøv at kikke på kommandoen GetTickCount. Denne kommando returnere
> antallet af millisekunder siden windows blev tændt. Det du så gør er
> at gemme dette tal(af typen dword så vidt jeg husker) og så
> sammenligne det med GetTickCount når brugeren klikker stop.
> Forskellen mellem de to repræsentere så tiden i millisekunder.

....og en anden metode:

Gem starttidspunkt i TDateTime og sluttidspunktet ligeså og træk dem fra
hinanden for at finde den forløbne tid, og brug så metoden TimeToStr.

var
diff: TDateTime;
oldFormat: String;
begin
foo := now;

// Store the old LongTimeFormat
oldFormat := LongTimeFormat;

// Set a new format, incl. msec
LongTimeFormat := 'hh:mm:ss:';

diff := foo - bar;

showmessage(TimeToStr(diff));

// REstore the LongTimeFormat
LongTimeFormat := oldFormat;
....

- hvis stopuret skal løbe mere end 24 timer, skal der lige tages hensyn
til dette.


> Ang. dit formateringsproblem så kan jeg ikke lige huske nogle
> konkrete formaterings funktioner(måske nogen andre kan?). Men ellers
> kan du jo checke og så selv tilpasse længden, noget i retning af:

<klip en masse kode>

> Det er en omvej, men den virker...Men prøv at kikke lidt i hjælp,
> måske der er en funktion al'a IntToStrF...

var
foo: integer;
begin
bar := Format('%.2d', [foo]);
....


/Claus
--
Claus Christiansen, <mailto:NOSPAM@unipeople.dk>, leave the adr. as it is
personal: <http://unipeople.dk/~cch>; pythia: <http://www.pythia.dk>
===========================================================--------------
"Computers are useless. They can only give you answers" - Pablo Picasso

Henry (03-03-2003)
Kommentar
Fra : Henry


Dato : 03-03-03 00:18

> Koden skal være i en timer, som tændes og slukkes fra en knap. (nemt nok,
> det er lavet)
> Uret skal måle i timer, minutter, sekunder og millisekunder (00:00:00:00)

Som der er blevet foreslået gemstarttidspunktet og træk det fra "now".

Men du skal nok ikke regne med nogen stor nøjagtighed i dit stopur, og du
skal nok heller ikke lave opdateringen på GUI for msec, da GUI nok ikke vil
kunne følge med.

mvh
Henry




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste