Delphi Can
[ÇÖZÜLDÜ] Delphi Formül Hesaplamaları Hk. - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: [ÇÖZÜLDÜ] Delphi Formül Hesaplamaları Hk. (/showthread.php?tid=4957)

Sayfalar: 1 2


[ÇÖZÜLDÜ] Delphi Formül Hesaplamaları Hk. - engerex - 14-06-2020

Ben hala sizin neden sorun yaşadığınız takıldım. Çünkü verdiğiniz formülle herhangi bir sorun yaşamadım.


Cvp: [ÇÖZÜLDÜ] Delphi Formül Hesaplamaları Hk. - shooterman - 14-06-2020

(14-06-2020, Saat: 09:29)engerex Adlı Kullanıcıdan Alıntı: Ben hala sizin neden sorun yaşadığınız takıldım. Çünkü verdiğiniz formülle herhangi bir sorun yaşamadım.
formulu excelden alıp aynı şekilde uyguladığımda aldığım sonuç ile, önce parantez içi işlemleri yaparak sonra diğer işlemleri yaptığım durumdaki formulde aldığım sonuç farklıydı.


[ÇÖZÜLDÜ] Delphi Formül Hesaplamaları Hk. - mrmarman - 16-06-2020

Merhaba. 

- Konu çözülmüş olarak kodlu ve hortlatmak istemem ama yeni öğrendiğim çok şık bir özellik varmış. 

- Bu özelliği de bir fonksiyon olarak düzenleyip bu başlık altından paylaşayım istedim. Tam da bu konu ile ilgili alakalı olduğundan ayrılmasını istemedim.

- Özellikle UNIT isimlerini başa yazıyorum ki, projenizin içerisinde kullanırken nerede hangi unite hangi fonksiyon / proc için ihtiyacınız olduğu bilinsin... Bu kısımlarını sadeleştirebileceğinizi hatırlatayım.  Idea

uses  System.Bindings.EvalProtocol
    , System.Bindings.EvalSys
    , System.Bindings.Evaluator;

function Calculate( aSource: String ): String;
var
 aScope    : System.Bindings.EvalProtocol.IScope;
 aCompBind : System.Bindings.EvalProtocol.ICompiledBinding;
begin
 aScope    := System.Bindings.EvalSys.BasicOperators;
 aCompBind := System.Bindings.Evaluator.Compile( aSource, aScope );
 Result    := aCompBind.Evaluate( aScope, nil, nil ).GetValue.ToString;
end;


Kullanımı :

procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Text := '10*(-1+7*3/2)+1';
 Edit2.Text := Calculate( Edit1.Text );
end;



m1gzsio2id9lvklnt1rh.gif



Cvp: [ÇÖZÜLDÜ] Delphi Formül Hesaplamaları Hk. - shooterman - 16-06-2020

(16-06-2020, Saat: 11:43)mrmarman Adlı Kullanıcıdan Alıntı: Merhaba. 

- Konu çözülmüş olarak kodlu ve hortlatmak istemem ama yeni öğrendiğim çok şık bir özellik varmış. 

- Bu özelliği de bir fonksiyon olarak düzenleyip bu başlık altından paylaşayım istedim. Tam da bu konu ile ilgili alakalı olduğundan ayrılmasını istemedim.

- Özellikle UNIT isimlerini başa yazıyorum ki, projenizin içerisinde kullanırken nerede hangi unite hangi fonksiyon / proc için ihtiyacınız olduğu bilinsin... Bu kısımlarını sadeleştirebileceğinizi hatırlatayım.  Idea

uses  System.Bindings.EvalProtocol
    , System.Bindings.EvalSys
    , System.Bindings.Evaluator;

function Calculate( aSource: String ): String;
var
 aScope    : System.Bindings.EvalProtocol.IScope;
 aCompBind : System.Bindings.EvalProtocol.ICompiledBinding;
begin
 aScope    := System.Bindings.EvalSys.BasicOperators;
 aCompBind := System.Bindings.Evaluator.Compile( aSource, aScope );
 Result    := aCompBind.Evaluate( aScope, nil, nil ).GetValue.ToString;
end;


Kullanımı :

procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Text := '10*(-1+7*3/2)+1';
 Edit2.Text := Calculate( Edit1.Text );
end;



m1gzsio2id9lvklnt1rh.gif

Elinize sağlık hocam.