Karekök hesabı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Tahsinzencir
Üye
Mesajlar: 46
Kayıt: 15 May 2009 11:16

Karekök hesabı

Mesaj gönderen Tahsinzencir » 27 Nis 2019 04:49

Sevgili Dostlar selamunalekum.
Excel de hesapladığım bir karekök formülünü delphi 7 de nasıl kodlarım:
Delphi 7 ve paradoks kullanıyorum.
Excel de yaptığım hesaplamayı Delphide nasıl yaparım.

Kod: Tümünü seç

Excel de bu şekilde hesaplama yapıyorom
B  SÜTUNU                                             Sonuç       Table1 Field
1   =315        {Sabit Sayı}                            315         kab                              
2   18           {Sabit Sayı}                            18         Del
3   4,186       {Sabit Sayı}                          4,186         He
4   = (B1 / (B2*B3)) {Formül}                         4,18          Su
5    0,9 {Sabit Sayı}                                 0,9           Ma
6   =((B4*1000)/B5) {Formül}                           4645         Sur
7   =(KAREKÖK(B6/0,785))/B5 {Formül}                     85         D2    {0,785 Bu sayı Sabit} 

Ancak delphi de nasıl bir kodlama yapmalıyım ki 7 cİ satırdaki 85 sonucunu elde edeyim.

Birçok kodlama denedim bulamadım En son aşağıdaki kodu yazdım sonuca varamadım.
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
  Table1D2.AsFloat:=sqrt(Table1Sur.AsFloat/0.785)/(Table1Ma.AsFloat); 
          // 0.785 (.)kullandığımda kod çalışıyor sonuç vermiyor (,) kulandığımda ise 
          //[Error] Unit1.pas(60): ')' expected but ',' found hatası veriyor
end; 
Yardımcı olursanız çok sevinirim.

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2150
Kayıt: 12 Haz 2003 03:05
Konum: merkez camii yanı

Re: Karekök hesabı

Mesaj gönderen freeman35 » 28 Nis 2019 10:20

procedure içine ilgili DataSet geliyor, o yüzden de
Table1D2. gibi değişken adı kullanmaya gerek yok. DataSet.FieldByName().AsFloat kullanın ki karışıklık olma ihtimalini ortadan kaldırın.
Bilgisayar dillerinde de parantezler matematikteki gibi çalışır. (içten dışa) ve buradaki /(Table1Ma.AsFloat); parantezler gereksiz.
. ve , için decimal ve thousand separator leri inceleyin.
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 !!!

Tahsinzencir
Üye
Mesajlar: 46
Kayıt: 15 May 2009 11:16

Re: Karekök hesabı

Mesaj gönderen Tahsinzencir » 28 Nis 2019 10:28

freeman35 uyarına Teşekkürler, Table1BeforePost da sonucu alamadım.
Sorunu bu şekilde çözdüm
procedure TForm1.RzButton2Click(Sender: TObject);
Var
x:Real;
begin
x:=sqrt(Table1.FieldByName('Sur').AsFloat/0.785)/Table1.FieldByName('Ma').AsFloat;
Table1.Edit;
Table1.FieldByName('D2').AsFloat:=x;
Table1.Post;
end;

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2150
Kayıt: 12 Haz 2003 03:05
Konum: merkez camii yanı

Re: Karekök hesabı

Mesaj gönderen freeman35 » 29 Nis 2019 12:09

Bu kodu table1 in afterpost una yazarsan, kuruğunu yakalama çalışmakla eşdeğer olur. Başka bir değiş ile kısır döngüye girer.
AsFloat:=x; Burada değişken kullanmanıza gerek yok. AsFloat:= sqrt(..... şeklinde kullanmak, gereksiz variable yani ram ve işlem tasarrufu olur.
Bölme işlemlerinde 0 yada null kontrolü yapmak uygun bir yazılım mantığı olur. Yoksa 0 la bölme işlemi diye hata alınabilinir.
try exeption bloğuna almakta çözümdür. Ama bunu ben, sağa sola çarparak yürüme benzetirim.
Olabilecek hataları kontrol etmek yani kurgulamaktır esas programcılık.
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 !!!

Cevapla