Kornometre Yapmak istiyorum

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mahmut
Üye
Mesajlar: 82
Kayıt: 21 May 2004 11:00
Konum: KONYA
İletişim:

Kornometre Yapmak istiyorum

Mesaj gönderen mahmut »

Arkadaslar merhaba,

Bir kronometre programı yapmam gerekiyor. girilen bir saat sonunda geriye dogru sayacak bir kronometre programı bilen varmı?

Formda arattırdım bir adet cevap buldum fakat yeterli değildi.. yardımlarınızı bekliyorum teşekkürler
Hayat Hayatı Anlamaya Yetmeyecek Kadar Kısadır. Önemli Olan Hayatı Anlamaya Çalışmak Değil Hayattayken Hayatta Olan İnsanlara Bir Eser Bırakabilmek veya Onlara Yardımcı Olabilmektir.
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

mahmut yazdı: girilen bir saat sonunda geriye dogru sayacak...
TTimer ile yapabilirsin. Her 10ms'de(1 salisede) bir, bir Time değişkenini azaltırsın. Veya yine timer ya da bir thread yardımı ile GetCurrentTime fonksiyonunu kullanarak da bir algoritma geliştirebilirsin.
mahmut yazdı: bir kronometre programı bilen varmı?
Program istiyorsan yanlış yerdesin. "Sohbet" kısmına bunu iletebilirsin.
En son fatihtolgaata tarafından 31 Tem 2007 01:38 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Merhaba,

GetTickCount ile komutun calistigi andan itibaren sistemin acilisindan itibaren kac milisaniye gectigini bulabilirsin,

Butona bastin, result := 1000000 diyelim
Butona bastin, result := 1001000 diyelim
1 saniye gecmis demektir,

Tabi getTickCount'u while dongusune sokup her defasinda degerini cekip oldvalue ile newvalueyu karsilastirirsan aradan ne kadar süre gectigini hesaplarsin.. Eger fark 1000 ise, kronometre degerini azalt / artir..

Bir de TimeGetTime() diye bir function vardi, ancak hangisi daha yuksek performansliydi hatirlamiorum...

Bir arastirin, TimeGetTime() ve GetTickCount() arasindaki performans farkini... Kolay gelsin
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

torry.ru sitesinde vede rx componentleri için analog veya dijital saati gösteren componentler var
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
mahmut
Üye
Mesajlar: 82
Kayıt: 21 May 2004 11:00
Konum: KONYA
İletişim:

Mesaj gönderen mahmut »

hocam yanlis anladiniz ben program istemiyorum. sadece kendi yaptigim bir programcigin icerisine kronometre koymak istedim. fakat halledemedim. dediginiz gibi ontimer nesnesini kullanarak yapmaya calistim ama basaramadim lutfen yardim edebilirmisiniz

Kod: Tümünü seç

     Timer1.Interval:=Timer1.Interval-1;
     Saniye.Value:=Saniye.Value-1;
     If Saniye.Value<=0 Then
     Begin
        Saniye.Value:=59;
        Dakika.Value:=Dakika.Value-1;
             If (Dakika.Value=0) Then
             Begin
                If Saat.Value=1 Then Begin
                                         Dakika.Value:=0;
                                      End;
                If Saat.Value=0 Then Begin
                                        Saat.Value:=0;
                                        Dakika.Value:=59;
                                     End;
            Saat.Value:=Saat.Value-1;
            End;
Hayat Hayatı Anlamaya Yetmeyecek Kadar Kısadır. Önemli Olan Hayatı Anlamaya Çalışmak Değil Hayattayken Hayatta Olan İnsanlara Bir Eser Bırakabilmek veya Onlara Yardımcı Olabilmektir.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Kronometre için bir buton ekledi ise
bu botun da Timer i aktif edeceksin.
İnterval =1000 (bu bir saniye demekti yanılmıyor isem)

timer ın ontimer ında da yukardaki yazdığın kodları yazacaksın.

Kod: Tümünü seç

var
  Form1: TForm1;
  var saniye,dakika,saat:integer  ;

implementation

{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
saniye:=saniye-1;
  edit1.Text:=inttostr(saat)+':'+ inttostr(dakika)+':'+inttostr(saniye);
     If Saniye<=0 Then
     Begin
        Saniye:=59;
             If (Dakika=0) Then
             Dakika:=Dakika-1 else
             Dakika:=59;
             Begin
             if saat<>0 then begin
                Saat:=saat-1;
                dakika:=59    ;
                    edit1.Text:=inttostr(saat)+':'+ inttostr(dakika)+':'+inttostr(saniye);
            End;
end;
    end;
       end;
procedure TForm1.Button1Click(Sender: TObject);
begin
saniye:=59;
dakika:=59;
saat:=00;
Timer1.Enabled:=true
end;
En son conari tarafından 03 Ağu 2007 04:31 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
mahmut
Üye
Mesajlar: 82
Kayıt: 21 May 2004 11:00
Konum: KONYA
İletişim:

Mesaj gönderen mahmut »

hocam cevap icin tesekkurler ama benim yapmak istedigim sey su

ben saat girecem

01: 01 : 15

Butona basınca Geri saymaya baslayacak
bu kodda benimkisi gibi calışıyor
01:01:01
01:01:0
0:0:59 oluyor



ben bunu yapıyorum zaten ama biraz daha ugrasayım bakalım kafayı yiyecem ya bi saatin çalışma mantıgını kodlayamadım :)
Hayat Hayatı Anlamaya Yetmeyecek Kadar Kısadır. Önemli Olan Hayatı Anlamaya Çalışmak Değil Hayattayken Hayatta Olan İnsanlara Bir Eser Bırakabilmek veya Onlara Yardımcı Olabilmektir.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

girdiğin saati ayırarak değişkenlere al ve hesaplama yap,
left right v.s ile ayırabilirsin.

senin kodları biraz değiştirerek yazdım tam çalışmıyor olabilir.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
mahmut
Üye
Mesajlar: 82
Kayıt: 21 May 2004 11:00
Konum: KONYA
İletişim:

Mesaj gönderen mahmut »

hocam farkındayım oyle yaptıgından anladım benim derdim saatin aralıklı yada aralıksız gösterilmesi degil. bende tam senin kaldıgın noktada kaldım ondan sordum soruyu
Hayat Hayatı Anlamaya Yetmeyecek Kadar Kısadır. Önemli Olan Hayatı Anlamaya Çalışmak Değil Hayattayken Hayatta Olan İnsanlara Bir Eser Bırakabilmek veya Onlara Yardımcı Olabilmektir.
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Yardımdan TDateTime tipine ve DateUtils altındaki fonksiyonlara bakabilirsin. Tek tek dakika saat diye ayırmana gerek yok. Bütün toplama çıkarma işlemlerini TDateTime üzerinden yap. Ardından göstermek istediğinde TimeToStr() fonksiyonunu kullan.
Kronometre sadece çıkarma ve karşılaştırma işlemi. Kodun çalışmaya başladığı vakit ile mevcut vaktin çıkarılmasından elde edilir. Biraz uğraşırsan yapabilirsin.

Kolay gelsin.
mahmut
Üye
Mesajlar: 82
Kayıt: 21 May 2004 11:00
Konum: KONYA
İletişim:

Mesaj gönderen mahmut »

hocam yardımların için saol ama incelemedigim sey kalmadi. kafam durdu acaba anlatabiliyormuyum bilmiyorum. gerçekten baska bir sey dusunemez oldum
bana biraz yardımcı olursanız kodu oluşturmanız mumkunmu

yalnız yanlış anlaşılmasın.ben saat girecem butona bastıgımda orada anlık olarak saniyenin geri sayması gerekiyor o yuzden ben bu sekilde ayırma olayına girdim. ama cıkmadım
Hayat Hayatı Anlamaya Yetmeyecek Kadar Kısadır. Önemli Olan Hayatı Anlamaya Çalışmak Değil Hayattayken Hayatta Olan İnsanlara Bir Eser Bırakabilmek veya Onlara Yardımcı Olabilmektir.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba..

- Geriye sayma işini o kadar da gözünüzde büyütmeyin. Başlangıç saati ile bitiş saatini karşılaştıracağınıza, belirlenen geri sayım saatini normal zamana ekleyin ve o saat geldi mi diye sorgulayın. Her şey daha basit hal alacaktır. Bırakın yükü bilgisayar çeksin, siz ve kodlarınız değil :lol:

- Bu başlığı görünce Delphi'yi açtım birer tane TEdit, TButton, TLabel ve bir de TTimer koyup şunları yaptım.

- Timer1'in interval'ini 20 yaptım...
- xSaat ve xSonSaat global değişkenlerdir. xSaat değişkeni fazladan koydum aslında gerek yoktu aslında ama anlaşılır olsun diye eklendi.

Kod: Tümünü seç

Var
  xSaat    : TTime;
  xSonSaat : TDateTime;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := '00:00:10,00';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  If Button1.Tag = 1 then Button1.Tag := 0
                     else begin
                       xSaat      := StrToTime(Edit1.Text);
                       xSonSaat   := Now() + xSaat;
                       Button1.Tag := 1;
                     end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
Var
  a,b,c,d : Word;
begin
  If (Button1.Tag = 1) AND ( (xSonSaat - Now()) >= 0)  then begin
    DecodeTime( xSonSaat - Now(), a,b,c,d );
    Label1.Caption := Format('%.2d:%.2d:%.2d,%.2d', [a,b,c,d div 10]);
  end;
end;
Bu haliyle bir geri sayma işi yapıyor.. Araya LAP butonları konabilir veya sonunda mesaj eklenebilir.

- Çok karmaşık kod yok ve de bence işlevsel... Basit düşünmek lazım, bazen kafamız oldukça karışık olabiliyor... :wink:
Resim
Resim ....Resim
mahmut
Üye
Mesajlar: 82
Kayıt: 21 May 2004 11:00
Konum: KONYA
İletişim:

Mesaj gönderen mahmut »

hocam hay senden ALLAH razı olsun ya kafam beynim şişmişti bunun üstüne birde makineye virüs girdi onunla uğraşıp duruyordum terslik varda bugunlerde bende hayırlısı :)

en iyisi okuyp üfleyip temiz bir uyku çekmek

yardımlarınız için hepinize teşekkürler
Hayat Hayatı Anlamaya Yetmeyecek Kadar Kısadır. Önemli Olan Hayatı Anlamaya Çalışmak Değil Hayattayken Hayatta Olan İnsanlara Bir Eser Bırakabilmek veya Onlara Yardımcı Olabilmektir.
Cevapla