Nedtælling

Tags:    delphi

Hej udviklere

Jeg skal lave et program som kan tælle ned til en bestemt dato på et bestemt tidspunkt og man skal kunne se tiden og datoen tælle ned. Det skal altså kunne afsluttes og når det startes igen skal det opdatere tiden og datoen fra f.eks Windows og tælle ned derfra igen.
Jeg er selv rimelig blank så jeg håber nogen kan hjælpe mig.

Mvh

Martin




8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Mange tak for din hjælp Michael.

Jeg vil lige beskrive præcis hvad jeg mener.

Hvis du nu forestiller dig at f.eks om 14 dage kl. 16:30 skal mit program stoppe og vise min Ontimer event. I dette tilfælde ’Tiden er nået’. Det vil sige at min label1 skal vise hvor mange dage,timer,min og sek der er tilbage til datoen om 14 dage og tælle ned realtime.

Håber du kan hjælpe mig videre

Mvh

Martin

Hej,

Okay her er en funktion som kan give dig år, måneder, dage, timer, minutter og sekunder mellem tiden nu og en du angiver:

Fold kodeboks ind/udKode 


F.eks. så kunne dit timer event se således ud:
Fold kodeboks ind/udKode 


Hvis du nu kun vil ha' dage, timer minutter og sekunder så sæt Y og M til -1 :
Fold kodeboks ind/udKode 


Håber det hjælper dig.
Hvis du skal gennem den dato/tid som programmet skal vente på, så brug evt. registry til at gemme denne variable.

Mvh
Michael.



Hej udviklere

Jeg skal lave et program som kan tælle ned til en bestemt dato på et bestemt tidspunkt og man skal kunne se tiden og datoen tælle ned. Det skal altså kunne afsluttes og når det startes igen skal det opdatere tiden og datoen fra f.eks Windows og tælle ned derfra igen.
Jeg er selv rimelig blank så jeg håber nogen kan hjælpe mig.

Mvh

Martin


Hej Martin,

Jeg er ikke helt sikker på hvad du mener men here goes:
1. En dato tæller man frem eller tilbage men når du skriver "ned" mener du så tilbage?
2. Hvor hurtig vil du ha' tiden til at tælle (realtime eller?)?

En dato-tid værdi gemmes i en TDateTime. Hvis du skal bruge tiden "lige nu" så kan du bruge funktionen "Now" som returnere en TDateTime. For at lave en TDateTime om til en streng skal/kan du bruge funktionen "DateTimeToStr".

Det var så lidt om hvordan du kan manipulere tiden i en variable.
Her er et lille kode stykke som tæller startup-tiden tilbage til dagen før.

Først skal du oprette en form og placere en TLabel og en TTimer komponent på denne.

1. Tilføj DateUtils til uses.

2. Opret to private variabler af typen TDateTime (findes i SysUtils).
Fold kodeboks ind/udKode 


3. Vælg formen og opret eventet "OnCreate". Indsæt følgende kode i eventet:
Fold kodeboks ind/udKode 


4. Vælg TTimer komponenten og opret eventet "OnTimer" (Object inspector->Events, dobbelt klik på "OnTimer"). Nu skal du indsætte følgende kode:
Fold kodeboks ind/udKode 



Din kode skulle gerne se således ud:
Fold kodeboks ind/udKode 



Dette skulle gerne give dig lidt at starte på (håber jeg) så god fornøjelse.

Michael.



Mange tak for din hjælp Michael.

Jeg vil lige beskrive præcis hvad jeg mener.

Hvis du nu forestiller dig at f.eks om 14 dage kl. 16:30 skal mit program stoppe og vise min Ontimer event. I dette tilfælde ’Tiden er nået’. Det vil sige at min label1 skal vise hvor mange dage,timer,min og sek der er tilbage til datoen om 14 dage og tælle ned realtime.

Håber du kan hjælpe mig videre

Mvh

Martin



Det ser alt sammen meget fint ud, men hvordan indstiller jeg tiden og datoen for den dato der skal tælles ned til. Jeg ved heller ikke hvordan man gemmer i registry.

Endnu en gang tak for hjælpen

Mvh

Martin




Det ser alt sammen meget fint ud, men hvordan indstiller jeg tiden og datoen for den dato der skal tælles ned til. Jeg ved heller ikke hvordan man gemmer i registry.

Endnu en gang tak for hjælpen

Mvh

Martin

For at lave en dato kan du bruge følgende funktion:
Fold kodeboks ind/udKode 


for at bruge registry skal du benytte klassen TRegistry som ligger i registry (skal indsætte under uses).
Fold kodeboks ind/udKode 


Michael.



Der er mange fine løsninger, men det I glemmer er at lade Delphi gøre arbejdet for jer. Jeg vil ikke gennemgå registry osv. men her er en løsning på nedtællingen som er meget meget nem.

Du skal have en variabel af typen TDateTime. Denne variabel kan gemmes i registreringsdatabasen eller en ini-fil, eller hvad du nu vil.
Derudover skal du have en TTimer og en TLabel.
I TTimerens OnTimer hændelse skriver du simpelthen følgende:

Fold kodeboks ind/udKode 


Dermed får du en nem nedtælling som er nøjagtig inden et sekund.

---
Thomas Due
tdue@mail.dk



Der er mange fine løsninger, men det I glemmer er at lade Delphi gøre arbejdet for jer. Jeg vil ikke gennemgå registry osv. men her er en løsning på nedtællingen som er meget meget nem.

Du skal have en variabel af typen TDateTime. Denne variabel kan gemmes i registreringsdatabasen eller en ini-fil, eller hvad du nu vil. Denne variabel kalder vi FSlut. Den skal f.eks. erklæres i private delen af din form erklæring. Derudover skal du have en TTimer og en TLabel.

I TTimerens OnTimer hændelse skriver du simpelthen følgende:

Fold kodeboks ind/udKode 


Dermed får du en nem nedtælling som er nøjagtig inden et sekund.

---
Thomas Due
tdue@mail.dk[Redigeret d. 20/03-03 14:17:35 af Thomas Due]



Der er mange fine løsninger, men det I glemmer er at lade Delphi gøre arbejdet for jer. Jeg vil ikke gennemgå registry osv. men her er en løsning på nedtællingen som er meget meget nem.

Du skal have en variabel af typen TDateTime. Denne variabel kan gemmes i registreringsdatabasen eller en ini-fil, eller hvad du nu vil. Denne variabel kalder vi FSlut. Den skal f.eks. erklæres i private delen af din form erklæring. Derudover skal du have en TTimer og en TLabel.

I TTimerens OnTimer hændelse skriver du simpelthen følgende:

Fold kodeboks ind/udKode 


Dermed får du en nem nedtælling som er nøjagtig inden et sekund.

---
Thomas Due
tdue@mail.dk[Redigeret d. 20/03-03 14:17:35 af Thomas Due]


Den holder ikke helt!
Når der er mindre end et år tilbage så får du f.eks. :
"99 år, 12 måneder, 30 dage, 0 timer, 0 minutter og 59 sekunder tilbage".

En anden ting, hvis der er 1 time og 30 minutter tilbage og du vælger kun at se hvor mange minutter der er tilbage så giver den ovenstående 30 minutter hvor min giver dig 90 minutter.

Dernæst her jeg lige en lille ændring til indlæsning af data fra registry:
Fold kodeboks ind/udKode 


Michael.
[Redigeret d. 20/03-03 18:34:19 af Michael Skovslund]



t