Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

TimeSpam funkcija u Delphiju 7

[es] :: Pascal / Delphi / Kylix :: TimeSpam funkcija u Delphiju 7

Strane: 1 2

[ Pregleda: 7152 | Odgovora: 31 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FireProxy
Beograd

Član broj: 19043
Poruke: 77
*.sbb.co.yu.



Profil

icon TimeSpam funkcija u Delphiju 715.12.2004. u 10:03 - pre 234 meseci
Da li neko ima ideju kako da resim sledeci problem......
date1 je ulazni parametar kada se neka aplikacija startovala (TDateTime)
date2 je ulazni parametar kada se ista aplikacija ugasila (TDateTime)
difference je broj godina, meseci, dana, sati, minuta. To jest koliko je gore pomenuta aplikacija radila.

U Delphi 7 nema TimeSpam, pa me interesuje neko drugo resenje....


Hvala.
When the program is being tested, it is too late to make design changes.
 
Odgovor na temu

sasas
Saša Slavnić
radim za neke švabe

Član broj: 35478
Poruke: 617
*.zaslon-telecom.si.



Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 10:22 - pre 234 meseci
Probaj sa

difference := Date2 - Date1; // ako zelis difference u datetime formatu

Imas i funkcije

YearsBetween .... Months, Weeks, Days, Hours, Minutes .... SecondsBetween

ss.
When something is hard to do, then it's not worth doing.
 
Odgovor na temu

FireProxy
Beograd

Član broj: 19043
Poruke: 77
*.sbb.co.yu.



Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 10:43 - pre 234 meseci
Nisam bas siguran da to radi........
Code:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Label3: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    date1, date2, difference  :  TDateTime;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
date1 := Now;
Label1.Caption := DateTimeToStr(date1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
date2 := Now;
Label2.Caption := DateTimeToStr(date2);
difference := date2 - date1;
Label3.Caption := DateTimeToStr(difference);
end;

end.



When the program is being tested, it is too late to make design changes.
 
Odgovor na temu

sasas
Saša Slavnić
radim za neke švabe

Član broj: 35478
Poruke: 617
*.zaslon-telecom.si.



Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 10:58 - pre 234 meseci
Radi ... ali ti koristi samo za vreme (jer datum se prikazuje od 31.12.1899).
Preporucujem ti u svakom slucaju ove druge funkcije.
Alternativno mozes da koristis DecodeDateTime funkciju, pa da 'rucno' oduzimas.

ss.
When something is hard to do, then it's not worth doing.
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 11:06 - pre 234 meseci
Ovako mozes da dobijes proteklo vreme u minutima

Code:

   StartDT := DateTimeToTimeSTamp (StartDateTime);
   EndDT := DateTimeToTimeSTamp (EndDateTime);
   Duration := ((EndDT.Date - StartDT.Date) * 60) +
                   ((EndDT.Time - StartDT.Time) / 1000 / 60)


 
Odgovor na temu

FireProxy
Beograd

Član broj: 19043
Poruke: 77
*.sbb.co.yu.



Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 11:18 - pre 234 meseci
mislio sam da postoji neki TimeSpam ili tako nesto.... .da ne lomim na ruke..... Hvala u svakom slucaju........ ili sto bi rekao Patak Daca : "Hvala ni za sta....." :)
When the program is being tested, it is too late to make design changes.
 
Odgovor na temu

sasas
Saša Slavnić
radim za neke švabe

Član broj: 35478
Poruke: 617
*.zaslon-telecom.si.



Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 11:21 - pre 234 meseci
nema na cemu :) uvek smo tu sa netacnim, nepotpunim i beskorisnim savetima ;)

ss.
When something is hard to do, then it's not worth doing.
 
Odgovor na temu

neor
Nenad Orlovic

Član broj: 26828
Poruke: 74
*.metrohive.net.



Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 12:26 - pre 234 meseci
Probaj ovako:

difference := date1 - date2 - 693959.0;

[Ovu poruku je menjao neor dana 15.12.2004. u 13:57 GMT+1]
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 12:27 - pre 234 meseci
zar ne moze samo da napravis razliku. TDateTime je nisa drugo do real tip, kad oduzmes dobices broj dana koji aplikacija radi i vreme je u razlomljenom delu.
Code:
 
  showMessage(FormatDateTime('DD days HH hours MM minutes and SS seconds', Now - StartDate))

trebalo bi da radi
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

FireProxy
Beograd

Član broj: 19043
Poruke: 77
*.sbb.co.yu.



Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 13:02 - pre 234 meseci
Citat:
neor: Probaj ovako:

difference := date1 - date2 - 693959.0;

[Ovu poruku je menjao neor dana 15.12.2004. u 13:57 GMT+1]


Jesi li probao?
Znas li sta se desi nakon jednog dana? nakon 24h?
When the program is being tested, it is too late to make design changes.
 
Odgovor na temu

sasas
Saša Slavnić
radim za neke švabe

Član broj: 35478
Poruke: 617
*.zaslon-telecom.si.



Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 13:13 - pre 234 meseci
A i meni je izgledalo kao dobra ideja.

@bancika: ne moze, jer datum ne pocinje od 0.0.0000 nego od 31.12.1899 tako da prosto oduzimanje ne dela. Zato je uveo neor ovu konstantu (malo uvecani DateDelta), ali ocigledno ne radi - ne vrti dane unapred.

ss.
When something is hard to do, then it's not worth doing.
 
Odgovor na temu

neor
Nenad Orlovic

Član broj: 26828
Poruke: 74
*.metrohive.net.



Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 15:20 - pre 234 meseci
Eh, datum stalno stoji na nuli :(
Sto je u stvari nedozvoljena vrednost za datum

 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.128.eunet.yu.



+1 Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 18:12 - pre 234 meseci
Probaj ovo:

Code:

procedure TimeSpan(StartDate, EndDate: TDateTime; Var Days, Hours, Min, Secs: integer);
Var
  temp: double;
begin
  Secs:= SecondsBetween(EndDate,StartDate);
  temp:= Secs / 86400;
  Days:= Trunc(temp); // Dani

  Secs:= Secs-(Days*86400);
  temp:= Secs / 3600;
  Hours:= Trunc(temp); // Sati

  Secs:= Secs-(Hours*3600);
  temp:= Secs/60;
  Min:= Trunc(temp); // Minuti

  Secs:= Secs-(Min*60); // Sekunde
end;

testiranje:

procedure TForm.Button1Click(Sender: TObject);
Var 
  Days, Hours, Min, Secs: integer;
begin
  TimeSpan(Now-5.5, Now, Days, Hours, Min, Secs);
  Caption:= Format('Razlika -> Dana: %d  Sati: %d  Minuta: %d Sekundi: %d', [Days, Hours, Min, Secs])
end;


Moguca je greska spod sekunde u duzim intervalima itd. Procitaj dokumentaciju za TDateTime ako te zanima detaljnije. Delphi ima unit DateUtils...
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: TimeSpam funkcija u Delphiju 715.12.2004. u 20:22 - pre 234 meseci
cekaj, jasno da dani ne pocinju od 000, ali...

(a + delta) - (b + delta) = a - b

zar ne..tako da od kad god da pocinje, razlika mora da bude ista
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.83.beocity.net.

Sajt: localhost


+5 Profil

icon Re: TimeSpam funkcija u Delphiju 716.12.2004. u 08:48 - pre 234 meseci
koliko buke oko sitnice..

jednostavno oduzmi početno od krajnjeg vremena, i prikaži to sa:

Code:
Label3.Caption := TimeToStr(difference);


eventualno ako će intervali biti duži od 24h, samo dodaj i dane ispred:

Code:
Label3.Caption := IntToStr(Trunc(difference))+' days '+TimeToStr(difference);



ispisivanje "aplikacija je radila mesec dana" je besmisleno, jer to ništa ne znači. šta je "mesec dana"? 30 dana? 31? 28/29? ili možda 30.4366...

zato se to i ne radi tako kako si zamislio.. pogledaj recimo kako vreme ispisuje task manager.. ili network connection status dialog.. ili..
 
Odgovor na temu

FireProxy
Beograd

Član broj: 19043
Poruke: 77
*.sbb.co.yu.



Profil

icon Re: TimeSpam funkcija u Delphiju 716.12.2004. u 10:03 - pre 234 meseci
Citat:
-zombie-: koliko buke oko sitnice..

ispisivanje "aplikacija je radila mesec dana" je besmisleno, jer to ništa ne znači. šta je "mesec dana"? 30 dana? 31? 28/29? ili možda 30.4366...

..


To sto ti je besmisleno je upravo ono sto ja hocu da pokusam da odradim...... Bas hocu da znam da izracunam koja godina i koji mesec ima koliko dana i na osnovu toga parsiram rezultat. Za moju aplikaciju je veoma bitno da prikaze da je radila npr. 1 godina, 6 meseci, 15 dana, 13 sati, 48 minuta i 56 sekundi. U krajnjem slucaju i da je besmisleno shvati to kao vezbu......
When the program is being tested, it is too late to make design changes.
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: TimeSpam funkcija u Delphiju 716.12.2004. u 10:08 - pre 234 meseci
FireProxy pa dobio si dovoljno razlicitih ideja, sad mozes da vezbas :)
Nazalost, nema gotovo resenje.
 
Odgovor na temu

FireProxy
Beograd

Član broj: 19043
Poruke: 77
*.sbb.co.yu.



Profil

icon Re: TimeSpam funkcija u Delphiju 716.12.2004. u 10:17 - pre 234 meseci
Pogresno si me shvatio...... ja ne trazim odgovor na pitanje..... otvorio sam diskusiju i nista vise....... na svim odgovorima hvala u svakom slucaju....... hteo sam da sagledam problem i iz drugog (necijeg) ugla.

Pozdrav svima.

P.S. Ako sam zvucao kao neko ko ocajnicki trazi da mu se resi problem i ko oce kod bez motike izvinjavam se.
When the program is being tested, it is too late to make design changes.
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.83.beocity.net.

Sajt: localhost


+5 Profil

icon Re: TimeSpam funkcija u Delphiju 716.12.2004. u 12:25 - pre 234 meseci
Citat:
FireProxy:
Za moju aplikaciju je veoma bitno da prikaze da je radila npr. 1 godina, 6 meseci, 15 dana, 13 sati, 48 minuta i 56 sekundi. U krajnjem slucaju i da je besmisleno shvati to kao vezbu......


baš me zanima za kakvu to aplikaciju to može da bude bitno.. a uostalom, i kao vežba je besmisleno.. evo ti pa vežbaj:

Proces A je radio od 1. januara u 00:00:00 tačno 29 dana, 0 sati, 0 minuta i 0 sekundi
Proces B je radio od 1. februara u 00:00:00 tačno 29 dana, 0 sati, 0 minuta i 0 sekundi.

moj program će ispisati:
Proces A je radio 29 dana, 00:00:00
Proces B je radio 29 dana, 00:00:00

tvoj će ispisati:
Proces A je radio 29 dana, 00:00:00
Proces B je radio 1 mesec, 0 dana, 00:00:00

(i to samo ako godina nije prestupna)

dakle, ubedi me da je ovo drugo poželjan (pravilan) izlaz bilo kog programa..
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: TimeSpam funkcija u Delphiju 716.12.2004. u 13:18 - pre 234 meseci
mozda sam ja glup pa ne shvatam sustinu problema. Sad sam otkucao da vidim zasto bi razlika od 1900 godina nesto znacila i pogodite - ne znaci nista. Posle startovanja aplikacije sam menjao sistemsko vreme za par sati, dana godina unapred i radilo je savrseno. pa da pitam ja jos jednom: u cemu je problem kod ove trivijalne stvari?

evo i koda:

Code:

var
  StartTime: TDateTime;

procedure TForm1.FormCreate(Sender: TObject);
begin
  StartTime := Now;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := 'Program radi ' + IntToStr(Trunc(Now - StartTime)) + ' dana ' + FormatDateTime('HH "sati" MM "minuta" SS "sekundi"', Now - StartTime);
end;

Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: TimeSpam funkcija u Delphiju 7

Strane: 1 2

[ Pregleda: 7152 | Odgovora: 31 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.