formül hazırlama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

formül hazırlama

Mesaj gönderen dilruba »

merhaba arkadaşlar , excel tarzı bi ekrandan verileri aldırtarak kullanıcıya formül hazırlatıyorum. Bu formulü program içinde kullanmam gerekiyor. Ancak hazırlanan formülü kopyala yapıştır yapıp çalıştırdığım zaman çalışırken program içinde çalışmıyor. Zannedersem tip dönüşümünden kaynaklanan bir hata var ama sorunu çözemedim.
Ne yapabilirim?

kod aşagıda ;

uz:= Length(dbedit73.text);
i:=1;
while i<=uz do
begin
edit:=copy(dbedit73.Text,i,1);
if edit='F' then
begin

text:=copy(dbedit73.Text,i,3);
if text='F1A' then
Hesapla:= hesapla+Edit3.Text;
if text='F1B' then
Hesapla:= hesapla+Edit3.Text;

i:=i+3;
end
else
begin

if (edit = '*') or (edit='/') then
begin
ozelkarakter:=edit;
hesapla:=hesapla+edit;
end
ELSE begin
if (ozelkarakter='*') or (ozelkarakter='/') then
begin
Hesapla:= hesapla+edit;
ozelkarakter:='';
end
else hesapla:=hesapla+edit;
end;

i:=i+1;
end;
end;
edit4.Text:='floattostr('+hesapla+')';

edit4.text 'deki veriyi çalıştıramadım (İşlem sonucunu göremiyorum)
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

Kod: Tümünü seç

 edit4.Text:='floattostr('+hesapla+')';
Yukarıdaki

Kod: Tümünü seç

hesapla
alanı muhtemelen double bir değişken gibi gözüküyor.
tırnaklarda yanlışlık var...Böyle olması lazım...

Kod: Tümünü seç

 edit4.Text:=floattostr(hesapla);
* Diğer hatalar için adım adım gitsen daha iyi olur...

iyi günler...
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

Mesaj gönderen dilruba »

hesapla string tipinde işlemleri adım adım atadığım bi değişken

ekranda görmek için de edit4.text kutusuna atadım .Amacım yazılan formulü görmekti. Ama asıl olması gereken textteki formulün çalışır halde olması.

o halde de işimi görmüyor.

Çok acil yardım edebilir misiniz?
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

O zaman sonucu şöyle görebilirsin;

Kod: Tümünü seç

edit4.Text:=hesapla;
Daha iyisi onunla hiç uğraşmayıp,
en güzeli bulunduğun satıra F5 ile BreakPoint koyarak,programın nerde hata verdiğini,değişkenlerin hangi değerleri aldığını öğrenebilirsin.

iyi günler...
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

Mesaj gönderen dilruba »

//edit float tipinde bi değişken ve edit4.text teki veriyi kopyalayıp çalıştırdıgımda sonuç dogru, ama edit4.text ten veriyi aşagıdaki gibi alıp kullanamıyorum.

edit:=strtofloat(DBEdit4.Text)*4+strtofloat(DBEdit4.Text)*5;
edit5.text:=floattostr(edit);

programı adım adım calıştırdım sonuç alamadım .Yardımlarınız için teşekkürler.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

DBEdit4.Text içindeki değer ###,###.## şeklinde formatlı ise nokta veya virgüllerden dolayı yapabilir..
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

Selam,
Görebildigim kadar cok hatan var, ilk hata son satirda basliyor

edit4.Text:='floattostr('+hesapla+')'; böyle bir sey asla calismaz.
floattostr, float degerini stringe cevirir. FloatTostr(234.24) gibi yada

var
Doubledeger: Double;
StringDeger : string;
begin
StringDeger := FloatTostr(Double);
showmessage('Degerin text olarak gösterilmesi ' + StringDeger);
end;

Diger hatan oparandlari bulmakla devam ediyor.
oparantlari düzgün secmediginden.

Delphinin demosunda Hesapmakinesi örnegi olmasi lazim. Ordaki örnegi bir incele.


ozelkarakter:=edit;
hesapla:=hesapla+edit;

Bu durumda Floattostr calismaz. Cünkü string'in icindekiler sadece rakam degil.
En son miskin tarafından 12 Ağu 2005 02:38 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
miskin
Ve Tanri, bütün kullarini davul edecek :)
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

Mesaj gönderen dilruba »

textin içerigi mesela su şekilde
strtofloat(DBEdit4.Text)*4+strtofloat(DBEdit4.Text)*5

formulü ise F1A*4+F1B*5 gibi
dilruba
Üye
Mesajlar: 39
Kayıt: 14 Oca 2005 05:06

Mesaj gönderen dilruba »

miskin arkadaşım peki nasıl bir şey yapabilirim. Pek çok şey denedim ama olmadı.
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

Verdiği hata mesajı ne :?: Hangi kodda hata veriyor :?:
gibi çözüme gidebiliriz...
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

1. Kodlarını foruma verirken herkesin kullandığı yöntemi kullan.
2.

Kod: Tümünü seç

edit4.Text:='floattostr('+hesapla+')'; 
böyle bir kod yazılmaz burası yanlış bir defa bunu

Kod: Tümünü seç

edit4.Text:=floattostr(hesapla); 
bunuda bu şekilde yazabilmen ve sonuç alabilmen için hesapla değişkeninin float tipinde bir sayı olması lazım.
3.

Kod: Tümünü seç

text:=copy(dbedit73.Text,i,3); 
if text='F1A' then 
Hesapla:= hesapla+Edit3.Text; 
if text='F1B' then 
Hesapla:= hesapla+Edit3.Text; 

bu tip kodlarda begin kullan derim sorunsuz olur.
4. Özellikle if then kullanırken beginlerin ve end leri çok iyi kontrol etmen lazım. bir de hata alıyorsan hatanı da yazarasan iyi olur.Kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

dilruba yazdı:textin içerigi mesela su şekilde
strtofloat(DBEdit4.Text)*4+strtofloat(DBEdit4.Text)*5

formulü ise F1A*4+F1B*5 gibi

Kod: Tümünü seç

procedure Denklem;
var 
   F1Faktor, F2Faktor : Double;
   Islem, F1AIslemi, F1BIslemi : Char;
   Pozisyon: integer;
   Formul: string;
begin
   Formul := 'F1A*4+F1B*5 ';
   Pozisyon := Pos(F1A, Formul);

   F1AIslemi := Formul[Pozisyon +3];
   F1Faktor := FindNextSayi(Formul, Pozisyon +3);
   
   Pozisyon := FindNextIslem(Formul, Pozisyon +3); 
   Islem := Formul[Pozisyon];

   F1BIslem := Formul[Pozisyon +3];
   F1AFaktor := FindNextSayi(Formul, Pozisyon +3);
   Sonuc(.....) 
end;
miskin
Ve Tanri, bütün kullarini davul edecek :)
Cevapla