saat kontrolü?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
uince
Üye
Mesajlar: 38
Kayıt: 01 Mar 2004 04:57

saat kontrolü?

Mesaj gönderen uince »

Şuan da Delphi de bir Shutdown programı hazırlıyorum.Programlama da henüz yeni olduğumdan sizlere birkaç sorum olacak.Ben bu programımda saat kontrolü yapmak istiyorum.Program istenilen saatte,istenilen görevi gerçekleştirdiği gibi ayarlanan süre bitiminde de görevleri yerine getirmekte.Ben programın saat ayarlarının elle değilde saati kontrol ederek otomatikmen ayarlama yapmasını istiyorum.Programa Scheduled Tasks özelliğini eklemek bence en mantıklı olanı ama bu özellikten önce öğrenmem gerekli şeylerin olduğunun farkındayım.İlk etapda saat kontrolü yaparak görevleri yerine getirmeyi eklemek istiyorum.

Program saati kontrol ederek örneğin saat 18:00:00 ve daha altıysa label1.Caption:='1';
eğer 12:00:00 ise label1.caption:='Saat 12'; vb.. gibi görevleri yerine getirmesini istiyorum.

label2.caption:=FormatDateTime(' tt ',now); komutunu Timer ile label2 ye aktardım ve başka bir timer ile label2 yi kontrol ettirdim ama düşündüğüm gibi olmadı.

Acaba bu düşündüklerimi nasıl gerçekleştirebilirim?

Yapacağım tek şey saat kontrolü...

Şimdiden teşekkürler..
Misafir

Mesaj gönderen Misafir »

yapmak istediğini doğru anladı isem.

forma bir timer koy ve intervalini 1000 ' e ayarla ve ontimer olayına istediğin kodları yaz.
uince
Üye
Mesajlar: 38
Kayıt: 01 Mar 2004 04:57

Mesaj gönderen uince »

şuan da zaten forumda timer var.Saat düzgün şekilde çalışıyor.Sorun saati kontrol etmek.Eğer saat 12:00:00 ise label1.caption:='Saat 12';

Tabii benim amacım saat 12 yazdırmak değil.Ben bu programı çalışmış olduğum işyerinde vardiya ayarlaması için yapmak istiyorum.Program açılışda saati kontrol edecek ve vardiyaya göre kapanma saatlerini ayarlayacak.Şuan da 18:00:00 da bilgisayarı kapatıyor.Program açıldığında eğerki saat 18:00:00 ın üstündeyse 23:00:00 da kapatmak üzere ayarlama yapacak.

Umarım anlatabilmişimdir.

Normal timer ile halledemedim.
Misafir

Mesaj gönderen Misafir »

Kod: Tümünü seç

if edit1.text = timetostr(time) then begin
.
.
end else
begin
.
.
.
end;
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhabalar...

- Kontrollerini yapmak için tek timer nesnesi yeterlidir. İkincisini kaldırabilirsin...

@microcu kodu vermiş. Ek olarak önem verilmesine inandığım iki şey var, onları aktarayım. Keza burada da ihtiyacın olacak.

1. İki saat veya tarih arası kontrol yaptırmak söz konusu olduğunda String ifade kontrolü yapılması hatalı sonuç doğrur. String ifadenin zamana dönüştürülüp yeni şekliyle karşılaştırmaya tabi tutulması gerekmektedir.

2. Zaman karşılaştırmalarında eşitlik kontrolü kullanmayıp, küçük-eşit veya büyük-eşit şeklinde bir ifade kontrolü tercih edilmelidir. Çünkü eşitlik kontrollerinde; genellikle bu kontrol tam zamanında olamıyor, istenilen zaman dilimi kaçırılmış blunuyor... Çünkü sayısal değerler milisaniye mertebesinde oluyor. Timer interval olayı sorguya geçene kadar zaman ilerliyor ve kontrol noktası kaçıveriyor.

- Program önerim şu şekilde...

:arrow: Önce bir fonksiyon oluşturup hangi vardiya olduğunun tespitini yaptır. Bunu Word tipinde 1..4'e kadar bir değer aktararak sabah, öğle, akşam, gece vardiyası olduğunu Timer OnTimer içerisinde yazacağın kontrollere aktarabilirsin...

:arrow: Timer içinde kullanılmak üzere bir adet global değişken tanıt. Veya {$J+} ve {$J-} blokları arasında tanımlayacağı, sadece Timer içerisinde değerini değiştireileceğin Const bir değişken de olur... Bu sana Mevcut vardiyayı tutacak ve saat değişiminin vardiya değişimine denk olduğu anlarda tetikleme mekanizması olarak çalışacak.

:arrow: Tetiklendiğinde kullanmak üzer bir procedure oluştur. Bu procedure içersinde artık mesaj mı verdirirsin, ShutDown Windows mu yaptırırsın sana kalmış. Ama unutma ki bir adet global değişkene daha ihtiyacın olacak, Vardiya Değişimi tetikli kaldığı sürece her saniye bu procedure'un birden fazla kere çalışmasını engellemelisin. Timer nesnenin Tag değeri bu iş için biçilmiş kaftan...

- Hadi kolay gelsin...
Resim
Resim ....Resim
Cevapla