Merhaba arkadaşlar.. herkeze kolay gelsin...
Matematiksel denklemlerle ilgili bir program yapıyorum.. Ancak şöyle bir sorunum var.. Verilen fonksiyonun tanımsız olup olmadığını anlamam gerekiyor.. Payda 0 olduğunda fonksiyonumuz tanımsız olur. Benim bunu yakalamam lazım.. Kullandığım komponent var bir tane.. Tparser10 diye.. Aşağıya komponentin .pas dosyalarının linkini koydum indirmek isteyenler indirebilirler. Sorunu komponent dışında çözersem daha iyi. ama eğer komponenetin .pas dosyasından yakalıycağımız bişey varsa aşağıdan bakabilirsiniz.. Yardımlarınızı bekliyorum. Programımın kilit noktası bu çünküü.. :/
http://rapidshare.com/files/187496469/parser.rar.html
Parseleme İşlemi..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Parseleme İşlemi..
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'
Re: Parseleme İşlemi..
Tabiki kodları inceleyerek belki birşeyler yakalanabilir. Ancak try...except bloğu içinde kodları çalıştırarak 0'a bölünme hatalarını kolayca yakalayabilirsiniz. Ayrıca değişkenlerin durumuna göre payda 0 değeri alıyor olabilir, yani denklemin kökleri. Bunu anlamanız mümkün değil. Ancak kodları inceleyerek bölme işlemini yapan fonksiyona payda koruması yapabilirsiniz. Benim tavsiyem, try..except. biraz tembellik ama olsun.
Re: Parseleme İşlemi..
evet hocam.. mantıklı bir fikir..
Ancak kodlar arasında oluşabilecek birsürü sorun var.. örneğin Edit'in içine sayısal veri girmemesi, editin içinin boş olması, editin içine komponentimin anlıyamadığı bir bilgi girmesi gibi.. bunlar arasından tanımsız olduğu bölümü seçmem zor olsa gerek..?
Ayrıca denklemi kullanıcı kendisi gireceği için denklemin köklerini yakalama şansım yok dediğiniz gibi..
ilginiz için teşekkürler.. araştırıyorum.. yardımlarınızı bekliyorum şimdiden sağoLun. .
Ancak kodlar arasında oluşabilecek birsürü sorun var.. örneğin Edit'in içine sayısal veri girmemesi, editin içinin boş olması, editin içine komponentimin anlıyamadığı bir bilgi girmesi gibi.. bunlar arasından tanımsız olduğu bölümü seçmem zor olsa gerek..?
Ayrıca denklemi kullanıcı kendisi gireceği için denklemin köklerini yakalama şansım yok dediğiniz gibi..
ilginiz için teşekkürler.. araştırıyorum.. yardımlarınızı bekliyorum şimdiden sağoLun. .
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'
Re: Parseleme İşlemi..
arkadaşlar gerçekten yardıma ihtiyacım var ... try except bloğu bile çalışmıyor nedense:S
burdaki sorunu çözemedim.. işlemiyor. verdiği uyarı.. '.... Floating by zero .... '
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
try
grafik_ciz(); // yarattığın herhngi bir prosedure..
except
showmessage('Fonksiyon tanımsız');
end;
end;
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'
Re: Parseleme İşlemi..
Hata olunca bunun önüne geçmeye çalışmak yada kullanıcıya çaktırmamak yerine matematiksel işlem yapan kodlarınızı düzenlerseniz daha iyi olur...Örneğin payda sıfır ise işlemi yapmayın ..if payda>0 then gibi bir ön kodda işinizi görür....
Re: Parseleme İşlemi..
try except blogu çalışır, fakat delphi içinde programı derleyip, debug ediyorsan, bu exception ı delphi yakalayıp, hatayı gösterir. Program delphi ide den degil de dışarıdan çalışırsa, except blogunun çalıştıgını görürsün.
Delphi IDE sinin bu exceptionları yakalamasını istemiyorsan, seçeneklerden debugger optionsı kontrol et.
Delphi IDE sinin bu exceptionları yakalamasını istemiyorsan, seçeneklerden debugger optionsı kontrol et.
Re: Parseleme İşlemi..
@Battosai;
Fonksiyon kullancı tarafından girildiği için paydayı bulma işlemi fazlasıyla uzun olucaktır. Ayrıca bu işlem sadece payda için değil.. örnek olarak logaritma fonksiyonu için 0dan küçük her değerdede bu sorun olucaktır. Dolayısıyla başka türlü kontrol altına almam gerekiyor.
@emin_as;
evet.. haklısınız, teşekkür ederim.. 1hafta içinde bitirmem gerekiyor programı umarım yetişir..

Fonksiyon kullancı tarafından girildiği için paydayı bulma işlemi fazlasıyla uzun olucaktır. Ayrıca bu işlem sadece payda için değil.. örnek olarak logaritma fonksiyonu için 0dan küçük her değerdede bu sorun olucaktır. Dolayısıyla başka türlü kontrol altına almam gerekiyor.
@emin_as;
evet.. haklısınız, teşekkür ederim.. 1hafta içinde bitirmem gerekiyor programı umarım yetişir..


Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'