int to time

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

int to time

Mesaj gönderen pro_imaj »

Merhaba;

integer bir değeri nasıl saate çevirebilirim acaba.

Kod: Tümünü seç

edit4.text:=(TimeToStr(StrToint(edit3.text)));
bu şekilde yaptığımda her zaman 00:00:00 sonucunu veriyor.

Teşekkür ederim.
En son pro_imaj tarafından 01 Ara 2005 05:40 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Nasıl birşey o değer? Göndersene... Integer olan.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Eğer tahmin ettiğim gibi ise:

IntegerDeğer div 60 = Saat
IntegerDeğer mod 60 = Dakika

Normalde TTime Double olarak yani floating point sayı tanımlanmıştır. Bir yazılımda ben de Integer tuttuğunu görünce böye bir hesap ile saat ve dakikayı elde etmiştim.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba @coderlord hocam

Kod: Tümünü seç

63981
Vtde bu şekilde tutuyor hocam galiba bu değer 17:46 ya eşit olması gerekiyor hocam.

Not: Bu saçma olay ara yazılım yaptığım için oluşuyor. Tarih alanlarınıda sayı olarak vtye yazdırıyorlar ne hikmetse ama tarih çevriminde bir sorun yok saatte ufak bir ayrıntı var galiba.

Teşekkür ederim.
Saygılarımla
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;
işin garip tarafı bu değeri excele yapıştırıp orada çevir saat dendiğindede delphideki gibi 00:00:00 sonucunu veriyor. Oysaki tarih alanıda sayı olarak tutuluyor excele götürüp çevir tarih dediğimde sorunsuzca çeviriyor.

Tarihteki mantık 1900+... diye gidiyor ya saatte :)

Saygılarımla
Teşekkür ederim
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Olay Double'ı algıladığı için şöyle yaptım.

Kod: Tümünü seç

ShowMessage(TimeToStr(0.63981));
Bu arada tamsayı kısmını hiç kaale almıyor. Sanırım tamsayıda tarih tutuluyor. Ondalık kısma göre bunun cevabı: 15:21:19 çıkıyor.

Yani nasıl çevireceksin.

ShowMessage(TimeToStr(StrToFloat('0,63981'))); gibi..
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bu yanıt doğru olmayabilir. Program ile bu değerleri karşılaştırman lazım. Belki farklı bir algoritma kullanılıyor.

Benim mod'lu hesabın burada işleyeceğini sanmıyorum.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba @coderlord hocam;

Kod: Tümünü seç

edit4.text:=(TimeToStr(StrToFloat('0,'+edit3.text)));
Verdiğin destekten ve çözümden dolayı çok teşekkür ederim baya moralimi bozmuştu bu olay.

Teşekkürler.
Saygılarımla
Çalışmalarınzıdaki başarılarınız daim olması dileğiyle.

Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;

Hocam bir sorun var. Sizin belirtiğiniz şekilde çevirme işlemini yapıyorum sizinde belirttiğiniz gibi sonuç olarak
Sayı =63981
Çevrim Değeri =15:21:19
Halbuki = 17:46 olması gerekiyor nedeni ise aynı değer için ilgili programa girip bakıyorum ve bu sonucu veriyor (bu kayıdı ben oluşturdum ve programı verdii saat doğru)


@coderlord hocam belki ufak bir ayrıntı daha vardır. Ben biraz delphi helpe göz atayım.

Saygılarımla
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Aradaki fark 2 saat 25 dakika. Bu delphiturkiye ye bakarken de problem oluyor. Bazen aramızda 2 saat 17 dakika fark oluyor.

Belki siz terminalin makinasına bakıyorsunuz. Ama saati serverinkine göre yazıyor.

Buna bir bakın.

Kolay gelsin.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

ofenX yazdı:Merhaba,
Aradaki fark 2 saat 25 dakika. Bu delphiturkiye ye bakarken de problem oluyor. Bazen aramızda 2 saat 17 dakika fark oluyor.

Belki siz terminalin makinasına bakıyorsunuz. Ama saati serverinkine göre yazıyor.
Merhaba hocam Dediğiniz olay biraz farklı ben denemeleri kendi makinamda yapıyorumprogramıda öyle yani böyle bir durum söz konusu olması muhtemel ddeğil. @coderlord hocamın önerdiği virgülden sonra vakasının bir detayı daha olmalı sanırım helptede pek açıklayıcı bilgi yok. Aynı veri için ara yazılım yaptığım programdan bakıyorum doğru saati gösteriyor benim çevirdiğim ise farklı


Saygılarımla
Teşekkür ederim.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

ilginç bi konuymuş
araştırıken toryy de bu örneği buldum.

Kod: Tümünü seç

function TimeToText(T: Integer): string;
var
  H, M, S: string;
  ZH, ZM, ZS: Integer;
begin
  ZH := T div 3600;
  ZM := T div 60 - ZH * 60;
  ZS := T - (ZH * 3600 + ZM * 60);
  if ZH <10 then H := '0' + IntToStr(ZH)
  else
    H := IntToStr(ZH);
  if ZM <10 then M := '0' + IntToStr(ZM)
  else
    M := IntToStr(ZM);
  if ZS <10 then S := '0' + IntToStr(ZS)
  else
    S := IntToStr(ZS);
  Result := H + ':' + M + ':' + S;
end;
http://www.swissdelphicenter.ch/torry/s ... php?id=401

http://delphi.about.com/cs/adptips2003/ ... 0403_5.htm
-bu daha güzelmiş...-

Kod: Tümünü seç

Caption :=TimeToText(63981); //caption = 17:46:21
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Ben de neden kaynaklandığını araştırırken 1 vereyim fark ne kadar diye bakayım dedim.

Kod: Tümünü seç

 
S := FormatDateTime('hh:mm:ss:zzz', strtofloat(edit1.text));
  showmessage( s);
0,1 için için çıkan sonuç 2:24:00:000 yani sonuçtaki fark. saati alırken 100 üzerinden hesaplamamız gerekir ama daha bağlantıyı kuramadım. 100 üzerinden derken

Kod: Tümünü seç

0,25   6 saate karşılık geliyor. 
0,75  18:00 e karşılık geliyor. 

Ben bu yoldan gidiyorum. Belki çözen olur mantığını.

İyi çalışmalar.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

aslında mesele -benim açımdan- time değişkeninin tam olarak ne tuttuğunu bilmemekmiş. saliseyide tutuyor sanıyordum ama sadece saat:dakika:saniye tutuyormuş. yukarıdaki kodlar bunu gösteriyor. kaç saniye bir dakika, kaç dakika da bir saat ettiğini bildiğimize göre geriye kalan ufak bir çevrim işi yapmak.

0,25 te ise virgülden sonraki 5 basamak dikkate alınıyor.

25000 / 60 = 416,6 dakika
416 / 60 = 6,9 saat
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bravo. Olay budur sadettin. :)
Cevapla