yakupnun Posted October 27, 2015 Share Posted October 27, 2015 (edited) arkadaşlar formu arattım if ile ilgili örnekleri inceledim videoları da izledim dün gece sabaha karşı 5 te uyudum deneye deneye bıktım ama bir türlü başaramadım ban bu if mevzunu tane tane anlatacak insana minnettar kalırım.ben hazır kod istemiyorum bu mevzuyu öğrenmek istiyorum şuradaki basit bir şartı bile oluşturamadım saat = System.GetTime(TIME_FMT_HOUR);--saati aldık dakika = System.GetTime(TIME_FMT_MIN); saniye = System.GetTime(TIME_FMT_SEC); Label.SetText("saat",""..saat..":"..dakika..":"..saniye.."") Page.StartTimer(100, 10); --................................................................. sTarih = System.GetDate(DATE_FMT_EUROPE); sGun = System.GetDate(DATE_FMT_DAYOFWEEK) if sGun == "1" then sGun = "Pazar " end if sGun == "2" then sGun = "Pazartesi" end if sGun == "3" then sGun = "Salı" end if sGun == "4" then sGun = "Çarşambaaa" end if sGun == "5" then sGun = "Perşembe" end if sGun == "6" then sGun = "Cuma" end if sGun == "7" then sGun = "Cumartesi" end Label.SetText("tarih", " "..Tarih); Label.SetText("gun", " "..sGun); Page.StartTimer(100, 10); if sGun == "1"then Label.SetText("gerisay", "ne sayacan bakalım") else Label.SetText("gerisay", "yokcanım");end yukarıdaki kodda haftanın günü yani sGun eşit ise sTarih teki 1. ve 7. güne(cumartesi, pazara) docks taki x.txt yi okutup ondaki saatlere sırasıyla geri sayım yaptırıp alarm çaldırmak istiyorum yok değilse(else) y.txt ti okuyupondaki saatlere sırasıyla geri sayım yaptırıp alarm çaldırmak istiyorum formdan bir arkadaş bir örnek paylaştı ama örnek biraz karışık geldi biraz yaşlılık birazda kafa kalınlığından bu if mevzunu anlayamadım bana hazır kod değil tanetane açıklayarak öğretecek arkadaşa minnettar kalırım projenin apz si https://yadi.sk/d/bnoL9FOJk3HnQ Edited October 27, 2015 by yakupnun Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted October 27, 2015 Editor Share Posted October 27, 2015 (edited) Kodlar çalışıyor. Sadece Tarih yazmışsın oraa sTarih yazıcan. Edited October 27, 2015 by pairs Quote Link to comment Share on other sites More sharing options...
yakupnun Posted October 27, 2015 Author Share Posted October 27, 2015 Kodlar çalışıyor. Sadece Tarih yazmışsın oraa sTarih yazıcan. if sGun == "1"then Label.SetText "1"ve "7" günü nasıl beraber yazmalıyım ayrıca hangi güne makinanın tarihini değiştirirsem değiştireyim label txe yokcanım dönüyor Quote Link to comment Share on other sites More sharing options...
ratapan Posted October 27, 2015 Share Posted October 27, 2015 (edited) şu şekilde bi dene if sGun == "1" AND sgun=="7" then Label.SetText Edited October 27, 2015 by ratapan Quote Link to comment Share on other sites More sharing options...
yakupnun Posted October 27, 2015 Author Share Posted October 27, 2015 şu şekilde bi dene if sGun == "1" AND sgun=="7" then Label.SetText AND argümanını kabul etmiyor hata veriyor [url=http://hizliresim.com/Ag1O0p][/url] Quote Link to comment Share on other sites More sharing options...
KintaRo Posted October 27, 2015 Share Posted October 27, 2015 and, or gibi ifadeler küçük harfle yazılmalı. Quote Link to comment Share on other sites More sharing options...
yakupnun Posted October 27, 2015 Author Share Posted October 27, 2015 (edited) and, or gibi ifadeler küçük harfle yazılmalı. onu buldum kücük harfle yazdım hata gitti ama if şartı oluşmadı sTarih = System.GetDate(DATE_FMT_EUROPE); sGun = System.GetDate(DATE_FMT_DAYOFWEEK) if sGun == "1" then sGun = "Pazar " end if sGun == "2" then sGun = "Pazartesi" end if sGun == "3" then sGun = "Salı" end if sGun == "4" then sGun = "Çarşambaaa" end if sGun == "5" then sGun = "Perşembe" end if sGun == "6" then sGun = "Cuma" end if sGun == "7" then sGun = "Cumartesi" end x =("1"); y =("7"); Label.SetText("tarih", " "..sTarih); Label.SetText("gun", " "..sGun); Page.StartTimer(100, 10); if sTarih == x and sTarih == y then Label.SetText("gerisay", "ne sayacan bakalım"); else Label.SetText("gerisay", "yokcanım");end burada yapmak istediğim 1.ve 7. günlerde ne sayacan bakalım yazması diğerlerinde ise yokcanım yazması yani hafta sonu "ne sayacan bakalım" hafta içi" yok canım" yazdırmak istiyorum ama hep yok canım yazıyor nerede yanlış yapıyorum anlamıyorum Edited October 27, 2015 by yakupnun Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted October 27, 2015 Editor Share Posted October 27, 2015 saat = System.GetTime(TIME_FMT_HOUR);--saati aldık dakika = System.GetTime(TIME_FMT_MIN); saniye = System.GetTime(TIME_FMT_SEC); Label.SetText("saat",""..saat..":"..dakika..":"..saniye.."") Page.StartTimer(100, 10); --................................................................. sTarih = System.GetDate(DATE_FMT_EUROPE); sGun = System.GetDate(DATE_FMT_DAYOFWEEK) if sGun == "1" then sGun = "Pazar" end if sGun == "2" then sGun = "Pazartesi" end if sGun == "3" then sGun = "Salı" end if sGun == "4" then sGun = "Çarşamba" end if sGun == "5" then sGun = "Perşembe" end if sGun == "6" then sGun = "Cuma" end if sGun == "7" then sGun = "Cumartesi" end Label.SetText("tarih", " "..sTarih); Label.SetText("gun", " "..sGun); Page.StartTimer(100, 10); local nText = (sGun == "Pazar" or sGun == "Cumartesi") and "ne sayacan bakalım" or "yok canıms"; Label.SetText("gerisay", nText); Stringlerde hata vardı Pazar kelimesinden sonra boşluk vardı mesela. sGun değişkeni geriye rakam döndürmüyor isim döndürüyor senin kod o yüzden çalışmıyyordu. Düzenledim. Quote Link to comment Share on other sites More sharing options...
yakupnun Posted October 27, 2015 Author Share Posted October 27, 2015 (edited) saat = System.GetTime(TIME_FMT_HOUR);--saati aldık dakika = System.GetTime(TIME_FMT_MIN); saniye = System.GetTime(TIME_FMT_SEC); Label.SetText("saat",""..saat..":"..dakika..":"..saniye.."") Page.StartTimer(100, 10); --................................................................. sTarih = System.GetDate(DATE_FMT_EUROPE); sGun = System.GetDate(DATE_FMT_DAYOFWEEK) if sGun == "1" then sGun = "Pazar" end if sGun == "2" then sGun = "Pazartesi" end if sGun == "3" then sGun = "Salı" end if sGun == "4" then sGun = "Çarşamba" end if sGun == "5" then sGun = "Perşembe" end if sGun == "6" then sGun = "Cuma" end if sGun == "7" then sGun = "Cumartesi" end Label.SetText("tarih", " "..sTarih); Label.SetText("gun", " "..sGun); Page.StartTimer(100, 10); local nText = (sGun == "Pazar" or sGun == "Cumartesi") and "ne sayacan bakalım" or "yok canıms"; Label.SetText("gerisay", nText); Stringlerde hata vardı Pazar kelimesinden sonra boşluk vardı mesela. sGun değişkeni geriye rakam döndürmüyor isim döndürüyor senin kod o yüzden çalışmıyyordu. Düzenledim. bir sorum daha var "ne sayacan bakalım" veya "yok canıms" bunların yerinede kod çaılştırabilirmiyim burada local argümanı ve parantez tırnak kullanma mantığı nasıldır Teşekkür ederim . Edited October 27, 2015 by yakupnun Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted October 27, 2015 Editor Share Posted October 27, 2015 orada label a yazdırdıgın için o şekilde yaptım. geriye çalışan koddan bir deger döndüreceksen oda yapılır ama tam olarka ne yapmak istiyorsun onu anlatırsan yardımcı olalım. Quote Link to comment Share on other sites More sharing options...
yakupnun Posted October 27, 2015 Author Share Posted October 27, 2015 orada label a yazdırdıgın için o şekilde yaptım. geriye çalışan koddan bir deger döndüreceksen oda yapılır ama tam olarka ne yapmak istiyorsun onu anlatırsan yardımcı olalım. yapmak istediğim haftasonu.txt veya haftaiçi.txt deki saatleri okutup sırayla o saat gelene kadar geri saydırmak ve saat eşitlendiğinde müzik çaldırmak bir nevi okul zili programı gibi mevcut zil programları beni isteğimi karşılamadığı için bu yolu tercih ettim Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted October 27, 2015 Editor Share Posted October 27, 2015 sormak istediğim aslında şu. haftanın 1. ve 2. günleri arasında ne yapmak istiyorsunuz ko olarka. Quote Link to comment Share on other sites More sharing options...
yakupnun Posted October 27, 2015 Author Share Posted October 27, 2015 (edited) sormak istediğim aslında şu. haftanın 1. ve 2. günleri arasında ne yapmak istiyorsunuz ko olarka. haftanın 1. günü pazar 7. günü cumartesi bugünlerde hs_zil.txt deki dosyada yazan saatlerle karşılaştırmak istiyorum sırayla haftanın 2,3,4,5,,6 günleri ise hi_zil dosyasındaki saatlerle karşılaştırmak istiyorum haftanın cumartesi pazar günleri hs_zil.txt dosyasını okuyacak içeriği: 08:58 09:00 09:40 09:58 10:00 10:40 10:48 10:50 11:30 14:18 14:20 15:00 15:18 15:20 16:00 16:08 16:10 16:50 16:58 17:00 bu saatlerle sistem saati eşitlenince alam çalacak hafta içi günlerindeise hi_zil.txt içeriğini okuyacak aynı şeyi yapacak sormak istediğim aslında şu. haftanın 1. ve 2. günleri arasında ne yapmak istiyorsunuz ko olarka. projenin apz si burada http://yadi.sk/d/iO9yEPlgk3bbH Edited October 27, 2015 by yakupnun Quote Link to comment Share on other sites More sharing options...
Xerkan Posted October 27, 2015 Share Posted October 27, 2015 Merhaba Hocam aslında bu işlem daha basit şekilde yapılabilir ,hemde hiç if else ler ile uğraşmadan ayrıca , if else ler içinde stringleri karşılaştırmak hatalara sebep olur string karşılaştırması sadece her iki string ingilizce karakterler içeriyorsa uygun olabilir ama buda kısa olanlar için verdiğiniz kod örneğinde önemli olan bölümü sizin için tekrar düzenledim ,isterseniz bir butona ekleyip hemen deniyebilirsiniz sonra uygun ise kendi projenizde kullanırsınız local tblGunler = {"Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"}; local nGun = String.ToNumber(System.GetDate(DATE_FMT_DAYOFWEEK)); if(nGun == 1 or nGun == 7) then -- hafta sonu yapılacak işlemi uygula Dialog.Message("Notice", "Şu anda hafta sonundayız ve günlerden "..tblGunler[nGun]); else -- hafta içi yapılacak işlemi uygula Dialog.Message("Notice", "Şu anda hafta içindeyiz ve günlerden "..tblGunler[nGun]); end Quote Link to comment Share on other sites More sharing options...
yakupnun Posted October 27, 2015 Author Share Posted October 27, 2015 (edited) Merhaba Hocam aslında bu işlem daha basit şekilde yapılabilir ,hemde hiç if else ler ile uğraşmadan ayrıca , if else ler içinde stringleri karşılaştırmak hatalara sebep olur string karşılaştırması sadece her iki string ingilizce karakterler içeriyorsa uygun olabilir ama buda kısa olanlar için verdiğiniz kod örneğinde önemli olan bölümü sizin için tekrar düzenledim ,isterseniz bir butona ekleyip hemen deniyebilirsiniz sonra uygun ise kendi projenizde kullanırsınız local tblGunler = {"Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"}; local nGun = String.ToNumber(System.GetDate(DATE_FMT_DAYOFWEEK)); if(nGun == 1 or nGun == 7) then -- hafta sonu yapılacak işlemi uygula Dialog.Message("Notice", "Şu anda hafta sonundayız ve günlerden "..tblGunler[nGun]); else -- hafta içi yapılacak işlemi uygula Dialog.Message("Notice", "Şu anda hafta içindeyiz ve günlerden "..tblGunler[nGun]); end evet kod bu şekilde çalışıyor yalnız ben sizin dün verdiğiniz apz deki kodları bununla birleştirince hata veriyor burada ki hatalar nelerdir nasıl düzeltebilirim local tblGunler = {"Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"}; local nGun = String.ToNumber(System.GetDate(DATE_FMT_DAYOFWEEK)); if(nGun == 1 or nGun == 7) then -- hafta sonu yapılacak işlemi uygula result = DateTimePicker.SetFormat("Plugin1", "HH.mm"); tblSavedAlarms = TextFile.ReadToTable("AutoPlay\\Docs\\alarms.txt"); if(tblSavedAlarms ~= nil) then for i=1 , #tblSavedAlarms do if(#tblSavedAlarms[i] > 0) then local h,m,_ = string.match(tblSavedAlarms[i],"(%d+):(%d+)"); -- Değiştirmek için geçerli tarih / zaman almak -- get current date/time to modify local tmAlarm = os.date("*t"); -- Saat ve dakikayı ayarlamak için alarm saatini değiştirmek -- modify alarm time to set hour and minute tmAlarm.hour = h; tmAlarm.min = m; tmAlarm.sec = 0; -- Alarm zamanının zaman damgası olsun -- get the time-stamp of alarm time local nTimeStamp = os.time(tmAlarm); -- Küresel tabloya bu zaman damgası ekleme -- add this time-stamp to global table table.insert(tblAlarmsTable,nTimeStamp); -- Ve kullanıcıya alarm görsel göstermek için liste için kullanıcı - dostu sürüm eklemek -- and add a user-friendly version to listbox to show alarms to user visually ListBox.AddItem("ListBox1", string.format("Alarm : %02.f:%02.f",h,m), ""); end end end end Page.StartTimer(1000, ID_ALARM_TIMER); else -- hafta içi yapılacak işlemi uygula result = DateTimePicker.SetFormat("Plugin1", "HH.mm"); tblSavedAlarms = TextFile.ReadToTable("AutoPlay\\Docs\\alarms2.txt"); if(tblSavedAlarms ~= nil) then for i=1 , #tblSavedAlarms do if(#tblSavedAlarms[i] > 0) then local h,m,_ = string.match(tblSavedAlarms[i],"(%d+):(%d+)"); -- Değiştirmek için geçerli tarih / zaman almak -- get current date/time to modify local tmAlarm = os.date("*t"); -- Saat ve dakikayı ayarlamak için alarm saatini değiştirmek -- modify alarm time to set hour and minute tmAlarm.hour = h; tmAlarm.min = m; tmAlarm.sec = 0; -- Alarm zamanının zaman damgası olsun -- get the time-stamp of alarm time local nTimeStamp = os.time(tmAlarm); -- Küresel tabloya bu zaman damgası ekleme -- add this time-stamp to global table table.insert(tblAlarmsTable,nTimeStamp); -- Ve kullanıcıya alarm görsel göstermek için liste için kullanıcı - dostu sürüm eklemek -- and add a user-friendly version to listbox to show alarms to user visually ListBox.AddItem("ListBox1", string.format("Alarm : %02.f:%02.f",h,m), ""); end end end Page.StartTimer(1000, ID_ALARM_TIMER); Edited October 27, 2015 by yakupnun Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted October 28, 2015 Editor Share Posted October 28, 2015 (edited) if(#tblSavedAlarms[i] > 0) then bu şekilde olmaz. Diyez işareti Count anlamına gelir. Yani bir rakam array olamaz. O yüzden. başındaki diyez işaretini kaldırıp if(tblSavedAlarms[i] > 0) then Bu şekilde kullanırsanız çalışacaktır. Edited October 28, 2015 by pairs Quote Link to comment Share on other sites More sharing options...
Xerkan Posted October 28, 2015 Share Posted October 28, 2015 evet kod bu şekilde çalışıyor yalnız ben sizin dün verdiğiniz apz deki kodları bununla birleştirince hata veriyor burada ki hatalar nelerdir nasıl düzeltebilirim Hocam ,bir önceki gönderdiğim örneği sizin yapmaya çalıştığınız yönde tekrar düzenledim hafta içi ve hafta sonu ayrımı yapıp ,eğer hafta içi ise hafta içi listesini ,hafta sonu ise hafta sonu listesini yüklüyoruz siz alarm ekleme yapmadığınız için alarm ekleme ve silme ile ilgili alanları sildim ,kafa karışıklığını önlemek için hafta içi ve hafta sonu listesi için olan txt dosyalarının yollarını Global Functions bölümünden düzenliyebilirsiniz PT_ALARMS_FILE_WEEKDAYS = _SourceFolder.."\\AutoPlay\\Docs\\weekdays.txt" PT_ALARMS_FILE_WEEKEND = _SourceFolder.."\\AutoPlay\\Docs\\weekend.txt" On Show bölümüne Türkçe açıklamalarda ekledim ,örnek proje şu haliyle çalışıyor sizin yapmanız gereken ise ,sunucudan verileri çekip bu txt dosyalarına yazmak tır proje ,program kapanmasa bile otomatik olarak bir sonraki güne alarmları ayarlar ancak AMS uygulamalarının life-time ı çok uzun değil bu tabiki AMS nin bir kusuru normalde bir uygulama windows kapatılmadığı sürece çalışması lazım ama malesef AMS uygulamaları 2-3 günde şişiyor ve runtime hatası veriyor , (bizzat denedik) yeni projeyi buradan indirebilirsiniz https://mega.nz/#!LVFBTLyR!MyAoynbcFdNlRpJbZuC9omZArlStvIKF-z8oSvGOpHE herhangi bir sorun olursa ,yine yardımcı olurum :good: if(#tblSavedAlarms[i] > 0) then bu şekilde olmaz. Diyez işareti Count anlamına gelir. Yani bir rakam array olamaz. O yüzden. başındaki diyez işaretini kaldırıp if(tblSavedAlarms[i] > 0) then Bu şekilde kullanırsanız çalışacaktır. tblSavedAlarms[i] bir string içeriyor ve # operatörüde uzunluk verdiğine göre buda o satırdaki string in uzunluğu anlamına geliyor if(#tblSavedAlarms[i] > 0) then -- Eğer tablonun i ile belirtilen indexindeki string in uzunluğu 0 dan büyük ise (boş değilse) Lua da stringlerin uzunluğu önceden sayılıdır , yani Lua her string in uzunluğunu string objesi içinde bir değişkende tutar Ve bu değişkene ulaşmanın en kısa yolu bu operatördür o kod bu şekildede olabilirdi , ama bu sefer bir string karşılaştırması yapıyoruz , # operatörüne göre biraz daha zaman alır bunu bende çoğu zaman kullanıyorum ,ama optimizasyon için # operatörünü kullanmak en iyisi if (tblSavedAlarms[i] ~= "") then yada böylede yazılabilirdi , ama burada bir action kullanıyoruz ,ve buda extra iş yükü artı ,bu action stringi baştan sona sayıyor basitçe anlatım ile strlen uyguluyor ve geriye bir uzunluk bildiriyor ve sonra biz bunu 0 ile karşılaştırıyoruz if(String.Length(tblSavedAlarms[i]) > 0) then Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted October 28, 2015 Editor Share Posted October 28, 2015 Aradaki i den göz kaymış :D ben tablo olarak düşündüm o anda. aslında dönen tablo değil orada haklısın abi. :thumbsup: Quote Link to comment Share on other sites More sharing options...
yakupnun Posted October 29, 2015 Author Share Posted October 29, 2015 (edited) hafta içi ve hafta sonu listesi için olan txt dosyalarının yollarını Global Functions bölümünden düzenliyebilirsiniz PT_ALARMS_FILE_WEEKDAYS = _SourceFolder.."\\AutoPlay\\Docs\\weekdays.txt" PT_ALARMS_FILE_WEEKEND = _SourceFolder.."\\AutoPlay\\Docs\\weekend.txt" On Show bölümüne Türkçe açıklamalarda ekledim ,örnek proje şu haliyle çalışıyor sizin yapmanız gereken ise ,sunucudan verileri çekip bu txt dosyalarına yazmak tır proje ,program kapanmasa bile otomatik olarak bir sonraki güne alarmları ayarlar Çok teşekkür le türkçe açıklamalardan sonra anladım nasıl yapıldığını gunucudan veri çekmek demişsin ben veri çekmek istemiyorum bunun direk ana makinadaki weekdays.txt weekend.txt leri okuyup ordan çalışmasını istiyorum glo baldan dosya yolunu değiştirdim ama okuma di bir ağdan txt okutmak için farkli bir kod mu kullanıyoruz? ID_ALARM_TIMER = 100; PT_ALARMS_FILE_WEEKDAYS = _SourceFolder.."AKASA-PC\\HG_Zil_3.32\\saatler\\weekdays.txt" PT_ALARMS_FILE_WEEKEND = _SourceFolder.."AKASA-PC\\HG_Zil_3.32\\saatler\\weekend.txt" tblAlarmsTable = {}; tblDays = {"Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"}; globaldeki yolu böyle düzenledim Edited October 29, 2015 by yakupnun Quote Link to comment Share on other sites More sharing options...
Xerkan Posted October 29, 2015 Share Posted October 29, 2015 Çok teşekkür le türkçe açıklamalardan sonra anladım nasıl yapıldığını gunucudan veri çekmek demişsin ben veri çekmek istemiyorum bunun direk ana makinadaki weekdays.txt weekend.txt leri okuyup ordan çalışmasını istiyorum glo baldan dosya yolunu değiştirdim ama okuma di bir ağdan txt okutmak için farkli bir kod mu kullanıyoruz? ID_ALARM_TIMER = 100; PT_ALARMS_FILE_WEEKDAYS = _SourceFolder.."AKASA-PC\\HG_Zil_3.32\\saatler\\weekdays.txt" PT_ALARMS_FILE_WEEKEND = _SourceFolder.."AKASA-PC\\HG_Zil_3.32\\saatler\\weekend.txt" tblAlarmsTable = {}; tblDays = {"Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"}; globaldeki yolu böyle düzenledim merhaba hocam su anda teldeyim detayli cevap veremiyorum en iyisi google ile 'UNC Path' kelimesini arayip buldugunuz sayfalardaki orneklere bakin ulasmaya calistiginiz klasor agda paylasilmis olmali ,arti yetkilendirme gerekmemeli son olarak _SourceFolder dehiskeni dosya yolunun basinda olmamali ,o dehisken uygulamanin o anda icinde oldugu klasoru belirtir ,,bu yuzden unc path in basinda olmamali Quote Link to comment Share on other sites More sharing options...
yakupnun Posted October 31, 2015 Author Share Posted October 31, 2015 PT_ALARMS_FILE_WEEKDAYS = ("\\\\AKASA-PC\\HG_Zil_3.32\\saatler\\weekdays.txt"); yolu bu şekilde düzenleyince problemim çözülmüş oldu teşekkür ederim Xerkan . 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.