if _gMod=3 then //limitsiz
begin
if (snc1=1) and (adm5<>2) then
begin
adm5:=2;
snc5:=OyunKapatAdim5_OyunuYenidenAcLIMITSZ; //oyunu yeniden ac
end;
arkadaslar yukardaki kodda OyunKapatAdim5_OyunuYenidenAcLIMITSZ fonksiyonunun 1 kere calismasini istiyorum kodlar timer icinde
ikinci kez timer tetiklendiginde bu kod bloguna girmesini istemiyorum.
ama kod surekli bu bloga griyor
adm5 degiskeni global degisken sebebi ne olabilir acaba
bir kere calismasini istediginiz durumlarda siz ne yapiyorsunuz
saygilar
Temel mantık;
if Self.Tag=0 then
begin
//Bir defaya mahsus çalıştırmak istediğiniz kodlar
Self.Tag:=1;
end;
Kodunuzda bir defa çalışmayı etkileyen iki kontrol var;
_gMod=3 olması, snc1=1 ve adm5<>2 olması
Bir defa çalışması için _gMod değerinin mutlaka 3 olması, snc1 değerinin 1 ile birlikte adm5 değerinin de 2 olmaması ve sonrassında bu şartı sağlayamaması gerekiyor.
Özetle _gMod=3 olsun;
snc1=1 iken ve adm5 2 den farklı bir değere sahip iken belirttiğiniz blok bir defa çalışacaktır.
Bu noktadan sonra, artık iki şartı değiştirmek gerekiyor.
Her defasında çalışıyorsa şartlar değişmemiş demektir.
burdaki sorun adm5=2 0ldugu halde kod bloguna gecmesi <> esitdegil gorevini yapmiyor
self.tag hemen deniyorum
bu arada OyunKapatAdim5_OyunuYenidenAcLIMITSZ; kod blogunda dela var for dongusu icinde 10 sn bekleme yapiyor
Delay(1000);
sanirim kod oraya girip cikamiyor bu arada timer da o bloga her seferinde giris yapiyor
sorunu anladim. OyunKapatAdim5_OyunuYenidenAcLIMITSZ fonksiyonuna gidince icerisinde delay gecikmesi oldugu icin fonksiyonu tamamlayana kadar devam ediyor.
self.tag da da durum ayni oldu.
bir fonksiyonu bir kere aktif oldugunda icindeki tum kodlar tamamlanana kadar islemeye devam ediyor saniyorum oysa gecikme koyunca surekli o fonksoyona tetikleme kokmak gerekiyormus
taki fonksiyon tamamlanana kadar
bu duruma gore duzenleme yapmaya calisacagim
saygilar
(28-04-2024, Saat: 20:17)sadikacar60 Adlı Kullanıcıdan Alıntı: [ -> ]burdaki sorun adm5=2 0ldugu halde kod bloguna gecmesi <> esitdegil gorevini yapmiyor
self.tag hemen deniyorum
bu arada OyunKapatAdim5_OyunuYenidenAcLIMITSZ; kod blogunda dela var for dongusu icinde 10 sn bekleme yapiyor
Delay(1000);
sanirim kod oraya girip cikamiyor bu arada timer da o bloga her seferinde giris yapiyor
sorunu anladim. OyunKapatAdim5_OyunuYenidenAcLIMITSZ fonksiyonuna gidince icerisinde delay gecikmesi oldugu icin fonksiyonu tamamlayana kadar devam ediyor.
self.tag da da durum ayni oldu.
bir fonksiyonu bir kere aktif oldugunda icindeki tum kodlar tamamlanana kadar islemeye devam ediyor saniyorum oysa gecikme koyunca surekli o fonksoyona tetikleme kokmak gerekiyormus
taki fonksiyon tamamlanana kadar
bu duruma gore duzenleme yapmaya calisacagim
saygilar
Timer' ın ontimer eventına girdiğinde ilk satıra Timer1.Enabled:=False;
Kolaylıklar dilerim
yada global bi değişken tanımlayın. Form creatinde 0 olsun değeri.
Timer'a girdiğinde 0 yapın. ve timer içnide o değeri if ile 1 mi deil mi kontrol ettirin ona göre çalıştırın kodlarınız.
duzelttim arkadaslar cok tesekkur ederim
hobi olarak teknik her konuda bilgim var plc programlarken kullandigimiz bir ladder ide var ordaki mantigi timer icinde kullandim.
timer aktif edildiginde ilk bloga giris yapiyor ilk is blogundaki gorev tamamlanana kadar timer dongu devam ediyor.
ilk is blogu tamamlaninca ikinci blokdaki goreve gecis veriyorum global sabit degiskenler kullanarak timer icinde bir cok gorevi tamaladiktan sonra en sonunda butun gorevler tamamlandiysa timer devreden cikartiyorum.
saygilar sunarim