(2*3) değerini nasıL hesaplatıcam.. :oops: :)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

(2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen qamyoncu »

Başlığı okuyan arkadaşlar biraz şaşırmışlardır heralde.. :)

Sorunum şu:

Elimizde, [ 2*x+5*x/3-x+1] gibi herhangi bir 'x' e bağlı fonksiyon var. Editimizin içeriği bu.
Ben editin içindeki x'i bulup yerine istediğim bir sayı yazdırıyorum, mesela '3'..
fonksiyonumuz: [2*3+5*3/3-3+1] oluyor. yalnız ben bu değeri hesaplatmak istiyorum. Gariptir, ne floata ne stringe nede integere cevirirsem ceviriyim editin içeriğini 9'a eşitliyemiyorum.. :) Ne yapmam lazım.. ? :oops:

Yardımlarınızı bekliyorum..
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen CiTiZEN »

Değişken olarak variant a çevirmeniz lazım
UWESIS CORPORATION
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen aslangeri »

s.a.
çevirme işlemini nasıl yapıyorsunuz.
editin içindeki metni parse edip sonucu sizin hesaplamanız lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen unicorn64 »

bi de işlem önceliği var. mümkünse parantez kullanılmalı, yoksa alınan sonuç beklenenle aynı olmayabilir
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen qamyoncu »

Kod: Tümünü seç

function trgn_ata(icerik:string;deger:integer):string;
var
a:array[1..100] of string;
i:integer;
begin

for i:=1 to length(icerik) do
   a[i]:=copy(icerik,i,1);

for i:=1 to length(icerik) do
 begin
   if a[i]='x' then
      begin
      insert(inttostr(deger),icerik,i);
      delete(icerik,i+1,1);
      end;
end;
result:=icerik;

end;
bu kod ile x'i bulup istediğim değere çeviriyorum.. Dediğiniz gibi parseleme işlemi yani.. Fakat elde ettiğim sonuç, string olarak kaldı.. extended'e veya integere çevirmem fayda etmedi.. variant aklıma gelmemişti. Çok teşekkür ederim. Şuan delphi kurulu değil bakamıyorum.. Fakat deniyeceğim..
Parantezlere ben değil, kullanıcı dikkat edecek.. ;)
Saygılar..
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen akdatilla »

merhaba
en son yazdığın fonksiyon sadece string bir çıktı veriyor.
Sanırım string çıktı ile bir hesaplanmas gereken matematiksel bir fonksiyonun elde ediyorsun.
Bize bu fonksiyonun sonucunu elde ettiğin kısmı gönderirsen ancak o zaman yardımcı olabiliriz.
Yazdığın matematiksel fonksiyon benim hesabıma göre 9 sonucunu vermeli.
Büyük ihtimalle fonksiyon sonucunu hesaplayan kodlarında hata var.
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen qamyoncu »

tabiiki.. haklısınız..Kodların diğer bölümünü veriyorum..

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);   //Basıldığında denklemde x yerine değerin yazılıp hesaplanması istendiğinde basılan buton
var
sayi_deger: variant; 
begin
sayi_deger:=trgn_ata(edit9.text,3);      //edit9, denklemin yazıldığı edit.
edit9.text:=sayi_deger;
end;                                                                          //////edit9.text = 2*3
bu şekilde yapınca değere eşitlemiyor. 2*3 olarak kalıyor sonu. sadece string olarak bırakıyor. ancak:

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);   //Basıldığında denklemde x yerine değerin yazılıp hesaplanması istendiğinde basılan buton
var
sayi_deger: variant; 
begin
sayi_deger:=2*3      //edit9, denklemin yazıldığı edit.
edit9.text:=sayi_deger;
end;                                                         //////edit9.text =  6
Buşekilde sorun çıkmıyor.. Anlıyamadım :oops: :(
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen veliadiguzel »

Sorunun cevap bir bileşen sitede de tanıtımı yapıldı dediginden daha komplike hesaplar da yapabiliyor
adı da ParseExpr içinde ornek program da var internette arattır bulamazsan
Veli ADIGÜZEL
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen akdatilla »

tekrar merhaba
sizin için foruma yeni bir makale ekledim.
Ekdeki uygulamayı indirirseniz herhalde size yardımcı olur.

viewtopic.php?f=19&t=24892
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen Hakan Can »

Şahsen ben böyle bir ihtiyacı en kestirmeden SQL ile hallederdim.

Basit bir SQL komutu bu işlemlerin sonucunu döndürür. Misal:

SELECT 2*3+5*3/3-3+1 AS SONUC FROM RDB$DATABASE //FireBird için sonuç 9 çıkıyor.

SELECT 2*3+5*3/3-3+1 AS SONUC // MS SQL için de sonuç 9 çıkıyor.

Ne özel bir komponent kullanmak ne de özel kod yazmak gerekir. Tabi kullanacağınız veritabanının (FireBird, MS SQL..) kurulu olması dışında.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen aslangeri »

@Hakan Can :bravo: :bravo: :alkis: :alkis:
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen veliadiguzel »

:bravo: :bravo: :bravo: :bravo: :bravo: :bravo: :bravo: gercekten iyidi
Veli ADIGÜZEL
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen akdatilla »

HakanCan Tebrik ederim, iyi bir fikir. Bu işlemi mysql,msacces vb birçok sql de destekliyordur eminim.
Onun için forumda fazla kalabalık olmasın diye yazdığım makaleyi sildim.
Nasıl olsa sql kullanmadan program yazan yoktur.
:bravo: :bravo: :bravo:
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen sabanakman »

akdatilla yazdı:HakanCan Tebrik ederim, iyi bir fikir. Bu işlemi mysql,msacces vb birçok sql de destekliyordur eminim.
Onun için forumda fazla kalabalık olmasın diye yazdığım makaleyi sildim.
Nasıl olsa sql kullanmadan program yazan yoktur.
:bravo: :bravo: :bravo:
Bence böyle bir makale bence silinmemeli :oops:. Bu şekildeki bir işleme veritabanı kullanmayan projede de ihtiyaç duyulabilir. Bence makaleyi tekrar ekleyin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: (2*3) değerini nasıL hesaplatıcam.. :oops: :)

Mesaj gönderen mrmarman »

Merhaba.

@husonet zaten makale olarak yayınlamıştı.

viewtopic.php?f=19&t=19780

Bunu unit haline getirdim ekte yolluyorum.

Örnek uygulama..

Kod: Tümünü seç

Edit2.Text := Format('%f', [ domuls(edit1.text) ]);
teşekkürler @husonet
Dosya ekleri
MathStringParser.rar
String içindeki matematiksel ifadeleri parse edip hesaplar ve sonucu döndürür.
(2.36 KiB) 116 kere indirildi
Resim
Resim ....Resim
Cevapla