23 Mayıs 2009 Arşivi

Exception Handling :)

// 23 Mayıs 2009 // 3 Yorum » // Genel

try_finally_except

Bitsin bu Tarih/Saat işkencesi(TDateTime tipleri ile oynamak..)

// 23 Mayıs 2009 // 2 Yorum » // Delphi, Programlama

Hemen hemen hepimiz yazdığımız projelerde tarih/saat verilerini kullanır, bunlar üzerinde çeşitli maniplasyonlar yaparız. Kimi zaman belli bir tarihe bir değer eklemek , kimi zamanda çıkartmak isteriz. Kimi zaman muhasebe/finansman uygulamalarında vade gün ve tarihlerini hesaplarken tarih/saat hesaplama rutinlerine ihtiyaç duyarız. Bazen de daha spesifik tarih/saat hesaplarına ihtiyacımız olur, artık yıl ile başımızı derde sokarız.

Tabii ki her modern programlama dilinin bu sorunları aşmak için hazır fonksiyon/kütüphaneleri vardır. Delphi’nin de var. Ancak bizim makalemize konu olacak gibi değil ;)
Genellikle, kullanıcılarımıza tarih ve saat verilerini girebilmeleri için, veri biçimlendirme denetimleri kullanırız. Bunların başında sanıyorum ki hepimizin kullandığı TDateTimePicker gelir. Ancak TDateTimePicker bileşeni bile tarih saat girmek için aslında meşakkatli bir bileşendir. Bu bileşenle uğraşmak istemeyenler TMaskEdit’in tarih saat formatındaki maskelerini kullanarak giriş işleminin yapılmasını sağlamak isterler. Ancak bu bileşen TDateTimePicker’dan bile daha yorucudur. Bu bileşenlerin birbirlerine göre güzel tarafları bulunmakla birlikte her ikisi de tam manası ile kusursuz tarih/saat girişleri için yeterlidir denilemez. TDateTimePicker’ın hem tarih hem saat gösterme ve değiştirmesine yarayan format harici bir property’si yokken, Format kullanıldığında da çeşitli garipliklerle karşılaşırız. TMaskEdit’in ise geçersiz tarih formatı hatalarından hem size hemde kullanıcılara eminim gına gelmiştir.

Herhangi bir tarihe 07 ay 25 gün 06 saat 05 dk 48 saniye eklemek istesek, bahsedilen bileşenler ile bunu yapmamız son derece zor olacaktır. Evet tüm bu zorlukları yaşadığınızı, yada siz yaşamasanız bile yazdığınız programın kullanıcılarının yaşadıklarını biliyorum. Belki artık onlar daha iyi bir alternatife rastlamadıkları için bu durumu kanıksamış olabilirler ama biz şimdi tarih/saat girişlerindeki kalıplaşmış yapıyı kırmaya hazırlanıyoruz.. Nasıl mı ?
(more…)