durdur butonu oluşturma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
durdur butonu oluşturma
ustalarım kolay gelsin. Nette bir çok araştırmasını yaptım ama malasef çözüme ulaşamadım daha doğrusu ulaştığım çözüm aşırı kod kalabalığına sebebiyet veriyor. Programıma durdur butonu yapmak istiyorum amacım o anki işlemi durdurmak (while vb. gibi) bunlara tek tek kod eklemek yerine durdurmanın başka bir yöntemi varmıdır.Programımda çok fazla kod olduğu için neredeyse yarısı durdur üzerine çok fazla kod kalabalığı oluyor malasef farklı bir çözüm önerisi olan varmı yada bir yolu varmı ?
Re: durdur butonu oluşturma
Global bir değişken kullan, boolean mesela, işlem bloklarında buna göre kurgula.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
-
- Üye
- Mesajlar: 401
- Kayıt: 22 Tem 2004 02:03
- Konum: sıkıntı çekmişlere yakın bi yerden
Re: durdur butonu oluşturma
Yazdığın her bir satır kod bir işlemin parçasıdır ve sen bir önceki işlem tamamlanmadan bir sonraki işleme geçemezsin. (eğer bütün işi main threade yaptırıyorsan). Bu konudaki çözümün thread kullanmandır. thread konusu programlama ve kurgunun güzel konusudur. Thread kabaca işlem parçacığı demektir. Siz uzun sürecek,matematiksel işlem yapacak veya yukarıda bahsettiğiniz gibi sonlandırma ihtiyacı duyduğunuz her işlem için thread kullanabilirsiniz. Thread araştırılması kafa yorulması gereken bir konudur, kaş yapayım derken göz çıkarmayın.
iyi çalışmalar.
iyi çalışmalar.
type
Tform1 = class(Tform)
Tform1 = class(Tform)
Re: durdur butonu oluşturma
Merhaba, ne tür bir kod durdurmak istediğinize dair örnek(ler) paylaşmanız mümkün mü? Neden böyle birşey yapmak istediğinizi paylaşmanız mümkün mü?seci20 yazdı: ↑30 Eki 2017 01:40 ustalarım kolay gelsin. Nette bir çok araştırmasını yaptım ama malasef çözüme ulaşamadım daha doğrusu ulaştığım çözüm aşırı kod kalabalığına sebebiyet veriyor. Programıma durdur butonu yapmak istiyorum amacım o anki işlemi durdurmak (while vb. gibi) bunlara tek tek kod eklemek yerine durdurmanın başka bir yöntemi varmıdır.Programımda çok fazla kod olduğu için neredeyse yarısı durdur üzerine çok fazla kod kalabalığı oluyor malasef farklı bir çözüm önerisi olan varmı yada bir yolu varmı ?
Re: durdur butonu oluşturma
hocam cevap verdiğiniz için çok teşekkür ederim öncelikle. Bu konu üzerine yoğunlaşacağım dediğiniz gibi.true_false yazdı: ↑30 Eki 2017 05:47 Yazdığın her bir satır kod bir işlemin parçasıdır ve sen bir önceki işlem tamamlanmadan bir sonraki işleme geçemezsin. (eğer bütün işi main threade yaptırıyorsan). Bu konudaki çözümün thread kullanmandır. thread konusu programlama ve kurgunun güzel konusudur. Thread kabaca işlem parçacığı demektir. Siz uzun sürecek,matematiksel işlem yapacak veya yukarıda bahsettiğiniz gibi sonlandırma ihtiyacı duyduğunuz her işlem için thread kullanabilirsiniz. Thread araştırılması kafa yorulması gereken bir konudur, kaş yapayım derken göz çıkarmayın.
iyi çalışmalar.
Re: durdur butonu oluşturma
hocam dosya okumadan tutun comport lara kadar hepsi.Tona kod var foksiyon ve prosedürler var. Amacım olurda bir yanlış işlem yapıldığında müşterinin bunun durdurmasıdır. Telefon üzerine olduğu için çok fazla hatalı işlem yapılabiliyor.ertank yazdı: ↑30 Eki 2017 05:55Merhaba, ne tür bir kod durdurmak istediğinize dair örnek(ler) paylaşmanız mümkün mü? Neden böyle birşey yapmak istediğinizi paylaşmanız mümkün mü?seci20 yazdı: ↑30 Eki 2017 01:40 ustalarım kolay gelsin. Nette bir çok araştırmasını yaptım ama malasef çözüme ulaşamadım daha doğrusu ulaştığım çözüm aşırı kod kalabalığına sebebiyet veriyor. Programıma durdur butonu yapmak istiyorum amacım o anki işlemi durdurmak (while vb. gibi) bunlara tek tek kod eklemek yerine durdurmanın başka bir yöntemi varmıdır.Programımda çok fazla kod olduğu için neredeyse yarısı durdur üzerine çok fazla kod kalabalığı oluyor malasef farklı bir çözüm önerisi olan varmı yada bir yolu varmı ?
Re: durdur butonu oluşturma
İşlemler uzun sürüyorsa, dosya okurken geçen süre, comm port tan cevap beklerken geçen süre, evet thread mutlaka kullan. Biraz düşün, hatta bunu mesajı okuyan herkese anlatıyorum, program pc ile konuşma dilidir, pc sadece toplama ve kıyaslama bilir, yani makinadır, her şeyi en ince ayrıntısına kadar senin söylemen gerekir. Bu bilgi ile düşün, kullanıcı iptal edecek, nasıl? butona basacak, e sonra ne olacak? dosyayı okurken duracak yada comm portu okurken duracak!! nasıl ? if ... then break; yada exit; özetle kod yazmazdan işlem yaptırmak istiyorsan ki bu imkansızın karesi hatta kübüdür ha şu olabilir, kodları birleştirebilirsin, aynı procedure ü 2-3 işlem için kullanmak gibi, bu sayede kod yazma işi azalır, ama komutu iptal edemezsin. komut çalışsın ama komut olmasın? sence mümkün mü?
Thread dede aynı şey, şu avantaşın olur, uzun işlemde kullanıcı button a tıklayamaz sistem kasılır, ama thread de tıklayabilir. Ama sen gene o thread içine if ... then break; buna benzer kodu yazmak zorundasın.
kolay gele
Thread dede aynı şey, şu avantaşın olur, uzun işlemde kullanıcı button a tıklayamaz sistem kasılır, ama thread de tıklayabilir. Ama sen gene o thread içine if ... then break; buna benzer kodu yazmak zorundasın.
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: durdur butonu oluşturma
Thread kullanımını öğrenme süreci uzun olabiliyor. Delphi son sürümlerinde işi pratikleştirmek için TTask sınıfını çıkardı. İlgili kaynaklardan incelenmesinde fayda var.
Kısaca pratik bir şekilde Thread kullanmış oluyorsunuz. Yani Thread için geçerli olan temel kural "grafik bileşenini değiştiremezsin" TTask içinde geçerlidir. Bu kural Microsoft işletim sisteminin bir kuralıdır. Delphi ile ilgili değildir. C#.Net için de aynı kural geçerlidir.
Mantığını anlamak adına aşağıdaki örnek verilebilir:
Kısaca pratik bir şekilde Thread kullanmış oluyorsunuz. Yani Thread için geçerli olan temel kural "grafik bileşenini değiştiremezsin" TTask içinde geçerlidir. Bu kural Microsoft işletim sisteminin bir kuralıdır. Delphi ile ilgili değildir. C#.Net için de aynı kural geçerlidir.
Mantığını anlamak adına aşağıdaki örnek verilebilir:
Kod: Tümünü seç
uses
System.Threading;
procedure TForm1.ZamanAlanIslem();
begin
Sleep(20000); // Bu komut normalde uygulamayı 20 saniye dondurur. Ancak Thread içinde olduğu için donma meydana gelmeyecek
ShowMessage('Zaman alan işlem bitti.');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Task: ITask;
begin
Task := TTask.Create(ZamanAlanIslem);
Task.Start();
// Bu noktada ZamanAlanIslem prosedürü Thread içinde çalışmaya başlar.
ShowMessage('Zaman alan işlem çalışmaya başladı.');
end;