Saat Başı İşlem Yaptırmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
Hancet
Üye
Mesajlar: 107
Kayıt: 08 May 2005 01:18
Konum: Burdan...
İletişim:

Saat Başı İşlem Yaptırmak

Mesaj gönderen Hancet »

S.A. Arkadaşlar

Yaptığım programın sistem saatine göre saat başı istediğim kodları çalıştırmasını istiyorum
Mesela saat 11:30 ise kodlar yarım saat sonra, saat 11:45 ise 15 dk sonra çalışacak.
Bunun için bi mantık geliştirdim ama kodlamayı tam beceremedim.
Bunun için delphi'nin bi komutu vardır diye düşünüyorum. Daha önce kullanan veya bunu bilen varsa yardım edebilir mi?

Kolay Gelsin...!
Varmı Beni İçinizde Tanıyan?
Yaşanmadan Çözülmeyen Sır Benim
Kalmasada Şöhretimi Duymayan,
Kimliğimi Tarif etmek zor Benim.
Kimsesizim hısmım da çok, hasmım da,
Görünmezim cismim de yok, resmim de,
Dil üzmezim, tek hece var ismimde,
Barınağım Delphi denen yer Benim..!
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Kod: Tümünü seç

if copy(timetostr(time),4,2)='00' then 
       begin
       .......................
       .......................
       end;
forma bi adet timer koy, timerın intervalini 60000 olarak ayarla, timerın ontime eventine yukardaki kodu yaz.
timer her dakikada bir saati alıp dakikasının 00 olup olmadığını kontrol edecektir. ve dakika 00 ise işlemi yapacaktır.
kolay gelsin
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

sorunun basit..
sistem saatini timer1 in ontimer inde edit1.text := timetostr(time); olarak göster 2. timerini ontimer inde

edit2.Text := formatdatetime('nn', strtotime(edit1.Text)); burda edit1 deki sistem saatini kontrol edip dakika alanını alıyor ...

if edit2.text = '00' Then
showmessage('Saat Başı');


Kod

Kod: Tümünü seç

procedure TForm1.Timer1Timer(Sender: TObject);
begin
edit1.Text := timetostr(time);
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
edit2.Text := formatdatetime('nn', strtotime(edit1.Text));
if edit2.Text = '00' then
ShowMessage('saat Başı');

end;
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

sayın @kadirkurtoğlu sanırım aynı dakikalarda cevap yazıyoduk. cevaplar neredeyse aynı :)
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

evet sanırım bir dakika ile siz öndesiniz...

olsun canım fazla cevap göz çıkarmazki... :lol:
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

1. Yöntem
Bir Timer Koyup Interval'ini 600000 Yap OnTimer'inede ShowMessage('Saat Başı'); Yazarsan Saat Başı Bi Messaj Gösterir.

2. Yöntem
Timer İle Edit Koy Ve Timer'e Çift Tıkla Alttakiler Yaz. Bu En Uzun Yöntemi :)

Kod: Tümünü seç

 Edit1.Text := TimeToStr(Time);
 if Edit1.Text = '01:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '02:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '03:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '04:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '05:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '06:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '07:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '08:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '09:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '10:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '11:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '12:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '13:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '14:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '15:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '16:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '17:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '18:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '19:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '20:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '21:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '22:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '23:00:00' then
 ShowMessage('Saat Başı');
 if Edit1.Text = '24:00:00' then
 ShowMessage('Saat Başı');
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Ben olsam Windows ile gelen Task Scheduler ı kullanırdım. Koda gerek yok ve çok esnek.
turkcanfidan
Üye
Mesajlar: 380
Kayıt: 31 Eki 2005 03:26

Mesaj gönderen turkcanfidan »

Zaten timer sistem kaynaklarını fazla tüketen bir bileşen, bir programa iki tane timer koymak bence en son düşünülecek şey. Nitrokonat'ın verdiği kod yeterli bence.
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

jedi paketinde vardı dün gördüm...

alarm diye bir nesne ...

bu nesne içerisine zamanlar ekliyorsun..ve o zaman geldiğinde o işi yapıyor...
şimdi dün dedimki keşke zil programında kullansa idim...neyse gelen istekler var zil programını geliştirmem yönünde bakalım...sana tavsiye ederim çok kolay array tipinde veri yüklüyorsun çokta kolay...
Kullanıcı avatarı
Hancet
Üye
Mesajlar: 107
Kayıt: 08 May 2005 01:18
Konum: Burdan...
İletişim:

Mesaj gönderen Hancet »

Arkadaşlar cevaplarınız için teşekkür ederim.
nitrokonat kardeşin verdiği cevap işimi gördü.

Trial_Cooder kardeşin verdiği ikinci yöntem gerçekten dediği gibi uzun.
ilk yöntem ise benim istediğimi yapmıyor. yinede ilgilendiği için teşekkürler.

coderlord kardeş Windows ile gelen Task Scheduler kullanmamı istemiş. Bu konuda biraz daha açık bilgi verirse çok memnun olurum. Forma component falan mı eklemem gerekiyor??? Standart bişey mi bu?

Kolay Gelsin...!
Varmı Beni İçinizde Tanıyan?
Yaşanmadan Çözülmeyen Sır Benim
Kalmasada Şöhretimi Duymayan,
Kimliğimi Tarif etmek zor Benim.
Kimsesizim hısmım da çok, hasmım da,
Görünmezim cismim de yok, resmim de,
Dil üzmezim, tek hece var ismimde,
Barınağım Delphi denen yer Benim..!
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

nitrokonat yazdı:

Kod: Tümünü seç

if copy(timetostr(time),4,2)='00' then 
       begin
       .......................
       .......................
       end;
forma bi adet timer koy, timerın intervalini 60000 olarak ayarla, timerın ontime eventine yukardaki kodu yaz.
timer her dakikada bir saati alıp dakikasının 00 olup olmadığını kontrol edecektir. ve dakika 00 ise işlemi yapacaktır.
kolay gelsin
benim bildiğime göre
timerın intervalini 60000 olarak ayarla

demek her bir saatte bir bakmak demek olur...sanırım ...

yanlış arıyor gibi oldum ama aamacım yanlış bilgilendirmeyi önlemekti...

yanlış anlaşılmaması dileğiyle...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

1 saniye aralıklarla işlem yaptırmak için timerin intervalini 1000 yapıyoruz. 60 saniye için de 60000 yapmak lazım. yani yazdığım kod dakikada bir kontrol yapacak.
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

nitrokonat yazdı:1 saniye aralıklarla işlem yaptırmak için timerin intervalini 1000 yapıyoruz. 60 saniye için de 60000 yapmak lazım. yani yazdığım kod dakikada bir kontrol yapacak.
peki biz bunu 60 çarpsak ne olur... o zaman işlemci daha az kullanılmazmı...?
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

eğer timerın intervalini 60 * 60000 yaparsak program ilgili kodu saatbaşı çalıştırır. program 11:35 te çalıştıysa 12:35 te ilk kontrolünü yapar. ve bakar ki saat başı değil. devam eder. işe yaramaz.
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

evet bu doğru benim sölediğim mantıkla programın saat başında kontrol işlemi yapılması için için programın saat başında çalıştırılması gerekir...
yani dk dk kontrol ettirmek lazım...ben ce genede jedi paketindeki alarm nesnesini kullanmak daha güzel olurdu diyorum ama arkadaşıncevabıda güzel... :D
Siz hayal edin...Biz yapalım TuannaSoft...
Cevapla