yakupnun Posted November 5, 2015 Share Posted November 5, 2015 Merhabalar formda ve indigo formda aramama ramen pek birşey bulamadım bu zaman ve timer fonksiyonlarını öğrenmek için yaptığım bir proje belli bir tarih ve saate geri sayım yaptırmak istiyorum kodları şöyle yazdım ama hata verdi yanlış yaptığımyesi söyleye bilirseniz sevinirim. nSaat= os.clock(); nTarih=os.date("%j"); nDeger=Input.GetText("Input1"); if nTarih < nDeger then Label.SetText("nTarih - 1"); else Label.SetText("Lütfen Tarih giriniz"); end inputtan girdiğim tarih ve saati sistem saat vetarihi ile karşılaştırıp geri saydıracam eşit olunca inputları ve butonu gösterip tarih ve saat girdirteceğim örnek proje; https://yadi.sk/d/PaimwqRskEwCi yardımlarınız için teşekkürler; Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted November 5, 2015 Editor Share Posted November 5, 2015 Ekte bi örnek hazırladım bi bak istersen. Quote Link to comment Share on other sites More sharing options...
yakupnun Posted November 5, 2015 Author Share Posted November 5, 2015 Merhabalar formda ve indigo formda aramama ramen pek birşey bulamadım bu zaman ve timer fonksiyonlarını öğrenmek için yaptığım bir proje belli bir tarih ve saate geri sayım yaptırmak istiyorum kodları şöyle yazdım ama hata verdi yanlış yaptığımyesi söyleye bilirseniz sevinirim. nSaat= os.clock(); nTarih=os.date("%j"); nDeger=Input.GetText("Input1"); if nTarih < nDeger then Label.SetText("nTarih - 1"); else Label.SetText("Lütfen Tarih giriniz"); end inputtan girdiğim tarih ve saati sistem saat vetarihi ile karşılaştırıp geri saydıracam eşit olunca inputları ve butonu gösterip tarih ve saat girdirteceğim örnek proje; https://yadi.sk/d/PaimwqRskEwCi yardımlarınız için teşekkürler; o kısmi anladım benim yapmak istediğim mesala yılın kaçıncı günündeğiz atıyorum 120 girilen tarih kaçıncı günde atıyorum 224 -lua .orgdan baktığımda os.date("%j") ile bu gün sayısını alıyordu yanlış anlamadıysam- şimdi sistem günü 224 ile eşitse inputları gösterecek lütfen tarih girin diyecek değilse doğum gününe xx gün xx saat xx dakka xxsaniye kaldı diyecek. yılın gününü imputtan tarih olarak girip güne nasıl çevirteceğimi bulamadım Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted November 5, 2015 Editor Share Posted November 5, 2015 function trim(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end function get_date_parts(date_str) _,_,y,m,d=string.find(date_str, "(%d+)-(%d+)-(%d+)") return tonumber(y),tonumber(m),tonumber(d) end local gTarih = Input.GetText("txtTarih"); if trim(gTarih) ~= "" then local yy,mm,dd = get_date_parts(trim(gTarih)) Dialog.Message("",os.date("*t",os.time{year=yy, month=mm, day=dd}).yday); end input a tarihi gg-aa-yyyy şeklinde girmelisin. Quote Link to comment Share on other sites More sharing options...
yakupnun Posted November 5, 2015 Author Share Posted November 5, 2015 (edited) function trim(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end function get_date_parts(date_str) _,_,y,m,d=string.find(date_str, "(%d+)-(%d+)-(%d+)") return tonumber(y),tonumber(m),tonumber(d) end local gTarih = Input.GetText("txtTarih"); if trim(gTarih) ~= "" then local yy,mm,dd = get_date_parts(trim(gTarih)) Dialog.Message("",os.date("*t",os.time{year=yy, month=mm, day=dd}).yday); end input a tarihi gg-aa-yyyy şeklinde girmelisin. olmadı sonsuz döngüye girerek hata veriyor yinede teşekkür ederim Edited November 5, 2015 by yakupnun Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted November 5, 2015 Editor Share Posted November 5, 2015 döngü yokki sonsuz döngüye girsin.Bi yerde hata ypaıyorsunuzdur. Quote Link to comment Share on other sites More sharing options...
yakupnun Posted November 5, 2015 Author Share Posted November 5, 2015 döngü yokki sonsuz döngüye girsin.Bi yerde hata ypaıyorsunuzdur. bu kodları diğer kodların yerine ontimer daki yapıştırdım denedim ,functionları globale yapıştırdım olmadı url=http://hizliresim.com/jjpd2r][/url] böyle bir hata veriyor Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted November 5, 2015 Editor Share Posted November 5, 2015 tarih lerin tipleri yanlıştır. Hatalı karşılaştırma yapıyorsunuzdur. Quote Link to comment Share on other sites More sharing options...
yakupnun Posted November 5, 2015 Author Share Posted November 5, 2015 local gTarih = Input.GetText("txtTarih"); if trim(gTarih) ~= "" then local dd,mm,yy = get_date_parts(trim(gTarih)) Dialog.Message("",os.date("*t",os.time{day=dd,month=mm,year=yy }).yday); -- bu satırda hata alıyorum zannederim "day" günle alakalı bir sorun end kod şöyle Quote Link to comment Share on other sites More sharing options...
Xerkan Posted November 5, 2015 Share Posted November 5, 2015 tarih lerin tipleri yanlıştır. Hatalı karşılaştırma yapıyorsunuzdur. Aslında hata tamamen senin verdiğin kod ile alakalı , (copy&paste) kod :rolleyes: Ayrıca kodda Lua 4 stili var hernekadar Lua 5 tede geçerli olsada artık kullanılmamaldır Lua 4 : os.time{day=dd,month=mm,year=yy} Lua 5 : os.time({day=dd,month=mm,year=yy}); Hata nın sebebi ise ,kod örneği ISO standart tarihine göre yazılmış (yyyy-mm-dd) bu yüzden yerel format ile uyumsuz get_date_parts isimli fonsiyon senin beklediğinin tam tersi bir veri döndürmektedir aşağıdaki örnekte y,m,d değişkenleri sırası ile yıl,ay,gün değerlerini alabilmeleri için tarih şu şekilde yazılmalıdır 2015-11-05 _,_,y,m,d=string.find(date_str, "(%d+)-(%d+)-(%d+)") bu yüzden y ve d değişknlerinin yerini değiştirmelisiniz çünkü bulunan veriler soldan sağa doğru sıralanır , sağdan sola değil isterseniz yer değiştirme işlemini bir alt satırdaki dönüş bölümündede yapabilirsiniz tonumber(y),tonumber(m),tonumber(d) ayrıca aşağıdaki kodda yy,mm,dd değişkenleri nil dönebilir , buda kontrol edilmeli ,aksi halde yine benzer bir hata olabilir çünkü os.time() fonksiyonu year,month,day alanları geçerli bir tablo bekler ve bunun dışındaki durumlarda o ekran görüntüsündeki hatayı alırsınız local yy,mm,dd = get_date_parts(trim(gTarih)) ayrıca ,aşağıdaki kod şuanki haliyle hep o anki tarihi verir çünkü os.time() dan dönen nil yada 0 bunun nedenide year bölümüne gün ve day bölümüne de yıl eklenmesidir Dialog.Message("",os.date("*t",os.time{year=yy, month=mm, day=dd}).yday); Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 5, 2015 Share Posted November 5, 2015 vay arkadaş yeni nesil ne şanslı. biz ams öğrenirken bu adamlar indigorose forumlarında ingilizce anlatıyorlardı her şeyi. biz de aralarından anladığımız kadarını çekip almaya çalışıyorduk. Şu lükse bak ya, her mesaj döküman niteliğinde. Kaçırmayın bu fırsatı, yapışın bu adamın yakasına derim :D Quote Link to comment Share on other sites More sharing options...
yakupnun Posted November 6, 2015 Author Share Posted November 6, 2015 Aslında hata tamamen senin verdiğin kod ile alakalı , (copy&paste) kod :rolleyes: Ayrıca kodda Lua 4 stili var hernekadar Lua 5 tede geçerli olsada artık kullanılmamaldır Lua 4 : os.time{day=dd,month=mm,year=yy} Lua 5 : os.time({day=dd,month=mm,year=yy}); Hata nın sebebi ise ,kod örneği ISO standart tarihine göre yazılmış (yyyy-mm-dd) bu yüzden yerel format ile uyumsuz get_date_parts isimli fonsiyon senin beklediğinin tam tersi bir veri döndürmektedir aşağıdaki örnekte y,m,d değişkenleri sırası ile yıl,ay,gün değerlerini alabilmeleri için tarih şu şekilde yazılmalıdır 2015-11-05 _,_,y,m,d=string.find(date_str, "(%d+)-(%d+)-(%d+)") bu yüzden y ve d değişknlerinin yerini değiştirmelisiniz çünkü bulunan veriler soldan sağa doğru sıralanır , sağdan sola değil isterseniz yer değiştirme işlemini bir alt satırdaki dönüş bölümündede yapabilirsiniz tonumber(y),tonumber(m),tonumber(d) ayrıca aşağıdaki kodda yy,mm,dd değişkenleri nil dönebilir , buda kontrol edilmeli ,aksi halde yine benzer bir hata olabilir çünkü os.time() fonksiyonu year,month,day alanları geçerli bir tablo bekler ve bunun dışındaki durumlarda o ekran görüntüsündeki hatayı alırsınız local yy,mm,dd = get_date_parts(trim(gTarih)) ayrıca ,aşağıdaki kod şuanki haliyle hep o anki tarihi verir çünkü os.time() dan dönen nil yada 0 bunun nedenide year bölümüne gün ve day bölümüne de yıl eklenmesidir Dialog.Message("",os.date("*t",os.time{year=yy, month=mm, day=dd}).yday); daha öce senin dediğin gibi olabileceğini düşünüp günle yılın yerlerini değiştirmiştim local gTarih = Input.GetText("txtTarih"); if trim(gTarih) ~= "" then local dd,mm,yy = get_date_parts(trim(gTarih)) Dialog.Message("",os.date("*t",os.time{day=dd,month=mm,year=yy }).yday); -- bu satırda hata alıyorum zannederim "day" günle alakalı bir sorun end bu şekilde ama sonuç değişmemişti .bunlar pairs in bana veridiği kodlardı bunlardan anlamaya çalıştım ama hatayı bulamadim ben ise daha basit bir mantıkla hareket etmek istemiştim "os.date("%j") " ile kaçıncı günde olduğumuzu buldurup inbox tan gelen verininde yılın kaçıncı günü olduğunu bulup - ki bunu henüz nasıl yapacağımı bilmiyorum- ikisini karşılaştırıp sistem günü inboxtan küçük ise doğum gününe xx gün xx dakka xx saat xx saniye diye geri sayım yaptırmayı planlıyorudum ama benim kodbilgimle benim için bir hayal olarak kalacak galiba . bu verdiğiniz bilgiler değerli teşekkürker Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted November 6, 2015 Editor Share Posted November 6, 2015 Proje dosyanı yollarmısın. Quote Link to comment Share on other sites More sharing options...
yakupnun Posted November 6, 2015 Author Share Posted November 6, 2015 Proje dosyanı yollarmısın. https://yadi.sk/d/PaimwqRskEwCi Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted November 6, 2015 Editor Share Posted November 6, 2015 Bi bak bakalım istediğin böyle bişeymiydi. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.