Yorumları: 120
Konuları: 24
Kayıt Tarihi: 03-12-2016
Rep Puanı: 112 Başlangıç
Database den çektiğimiz string bir formülümüz var.
Bu formülümüz genislik*yukseklik diyelim.
Hesaplama esnasında bu formülü çekerek, baska bir tablodan genislik ve yukseklik (float) değerini alıp hesaplama sonucunun çıktısını nasıl alırız?
Normal şartlarda ;
var sformul:string;
mgenislik,myukseklik,mformul:double;
begin
mgenislik:=1500 ;
myukseklik:=1500 ;
sformul:='mgenislik*myukseklik/1000000'; //burdaki formülü tablodan alıp,
mformul:= mgenislik*myukseklik/1000000; buraya aktararak hesaplama nasıl yapabiliriz?
sedit1.Text:= floattostr(mformul);
end;
Yorumları: 698
Konuları: 21
Kayıt Tarihi: 24-03-2017
Rep Puanı: 4.469 Uzman
Yorumları: 277
Konuları: 50
Kayıt Tarihi: 05-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.294 Programcı
(19-03-2022, Saat: 15:35)apachi2006 Adlı Kullanıcıdan Alıntı: Database den çektiğimiz string bir formülümüz var.
Bu formülümüz genislik*yukseklik diyelim.
Hesaplama esnasında bu formülü çekerek, baska bir tablodan genislik ve yukseklik (float) değerini alıp hesaplama sonucunun çıktısını nasıl alırız?
Normal şartlarda ;
var sformul:string;
mgenislik,myukseklik,mformul:double;
begin
mgenislik:=1500 ;
myukseklik:=1500 ;
sformul:='mgenislik*myukseklik/1000000'; //burdaki formülü tablodan alıp,
mformul:= mgenislik*myukseklik/1000000; buraya aktararak hesaplama nasıl yapabiliriz?
sedit1.Text:= floattostr(mformul);
end;
Alternatif olarak veritabanından formül ve parametreleri çekerken Execute Statement ile de çözebilirsin.
Ben sql Server da örneklendirdim, kullandığın veritabanına göre kod değişebilir.
Kalan ömrünün en genç build’indesin.
Counter artar, deadline sabit.
Age++ çalışıyor, rollback yok.
Her yer exception
Yorumları: 120
Konuları: 24
Kayıt Tarihi: 03-12-2016
Rep Puanı: 112 Başlangıç
19-03-2022, Saat: 19:19
(Son Düzenleme: 19-03-2022, Saat: 19:38, Düzenleyen: apachi2006.)
(19-03-2022, Saat: 17:46)frmman Adlı Kullanıcıdan Alıntı: https://github.com/Crownie88/Delphi-math...Parser.pas
Math sınıfı ekli olmasına rağmen pas dosyasında 94:Stack[0] := Power(Stack[1], Stack[0]);// Power bu satırda hata veriyor.
Kullanımı konusunda bilgi verebilir misiniz?
(19-03-2022, Saat: 19:00)bydelphi Adlı Kullanıcıdan Alıntı: (19-03-2022, Saat: 15:35)apachi2006 Adlı Kullanıcıdan Alıntı: Database den çektiğimiz string bir formülümüz var.
Bu formülümüz genislik*yukseklik diyelim.
Hesaplama esnasında bu formülü çekerek, baska bir tablodan genislik ve yukseklik (float) değerini alıp hesaplama sonucunun çıktısını nasıl alırız?
Normal şartlarda ;
var sformul:string;
mgenislik,myukseklik,mformul:double;
begin
mgenislik:=1500 ;
myukseklik:=1500 ;
sformul:='mgenislik*myukseklik/1000000'; //burdaki formülü tablodan alıp,
mformul:= mgenislik*myukseklik/1000000; buraya aktararak hesaplama nasıl yapabiliriz?
sedit1.Text:= floattostr(mformul);
end;
Alternatif olarak veritabanından formül ve parametreleri çekerken Execute Statement ile de çözebilirsin.
Ben sql Server da örneklendirdim, kullandığın veritabanına göre kod değişebilir.
procedure TForm8.sBitBtn1Click(Sender: TObject);
var mgenislik,myukseklik:double;
begin
UniConnection1.Connected:=true;
UniQuery1.Active:=true;
qrecete.Active:=true;
mgenislik:=1500 ;
myukseklik:=1500 ;
UniQuery1.SQL.Clear;
UniQuery1.SQL.add('declare @formul varchar(100)');
UniQuery1.SQL.add('set @formul = genislik*yukseklik');
UniQuery1.SQL.add('set @formul = replace(@formul,genislik,mgenislik');
UniQuery1.SQL.add('set @formul = replace(@formul,yukseklik,myukseklik');
UniQuery1.SQL.add('set @formul = select +@formul+sonuc');
UniQuery1.SQL.add('exec(@formul)');
ShowMessage(UniQuery1sonuc.Text);
mgenislik ve myukseklik yerine değer verirsek sonuç döndürüyor, ama string değişimi yaptığı için değer döndürmüyor.
Yorumları: 277
Konuları: 50
Kayıt Tarihi: 05-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.294 Programcı
(19-03-2022, Saat: 19:19)apachi2006 Adlı Kullanıcıdan Alıntı: (19-03-2022, Saat: 17:46)frmman Adlı Kullanıcıdan Alıntı: https://github.com/Crownie88/Delphi-math...Parser.pas
Math sınıfı ekli olmasına rağmen pas dosyasında 94:Stack[0] := Power(Stack[1], Stack[0]);// Power bu satırda hata veriyor.
Kullanımı konusunda bilgi verebilir misiniz?
(19-03-2022, Saat: 19:00)bydelphi Adlı Kullanıcıdan Alıntı: Alternatif olarak veritabanından formül ve parametreleri çekerken Execute Statement ile de çözebilirsin.
Ben sql Server da örneklendirdim, kullandığın veritabanına göre kod değişebilir.
procedure TForm8.sBitBtn1Click(Sender: TObject);
var mgenislik,myukseklik:double;
begin
UniConnection1.Connected:=true;
UniQuery1.Active:=true;
qrecete.Active:=true;
mgenislik:=1500 ;
myukseklik:=1500 ;
UniQuery1.SQL.Clear;
UniQuery1.SQL.add('declare @formul varchar(100)');
UniQuery1.SQL.add('set @formul = replace(@formul,genislik,mgenislik');
UniQuery1.SQL.add('set @formul = replace(@formul,yukseklik,myukseklik');
UniQuery1.SQL.add('set @formul = select +@formul+sonuc');
UniQuery1.SQL.add('exec(@formul)');
ShowMessage(UniQuery1sonuc.Text);
mgenislik ve myukseklik yerine değer verirsek sonuç döndürüyor, ama string değişimi yaptığı için değer döndürmüyor.
Sql server session ortamında varchar bir değişkene tırnak içerisinde değer atamanız gerekir.
string işlemleri için şöyle deneyin
UniQuery1.SQL.add( 'set @formul = '+QuotedStr('genislik*yukseklik') );
bu kod ile sql session ortamına string değişkenizin tırnak içerisisinde gidecek.
bunu diğer satırlarada uygulayın
Kalan ömrünün en genç build’indesin.
Counter artar, deadline sabit.
Age++ çalışıyor, rollback yok.
Her yer exception
Yorumları: 120
Konuları: 24
Kayıt Tarihi: 03-12-2016
Rep Puanı: 112 Başlangıç
(19-03-2022, Saat: 20:05)bydelphi Adlı Kullanıcıdan Alıntı: (19-03-2022, Saat: 19:19)apachi2006 Adlı Kullanıcıdan Alıntı: Math sınıfı ekli olmasına rağmen pas dosyasında 94:Stack[0] := Power(Stack[1], Stack[0]);// Power bu satırda hata veriyor.
Kullanımı konusunda bilgi verebilir misiniz?
procedure TForm8.sBitBtn1Click(Sender: TObject);
var mgenislik,myukseklik:double;
begin
UniConnection1.Connected:=true;
UniQuery1.Active:=true;
qrecete.Active:=true;
mgenislik:=1500 ;
myukseklik:=1500 ;
UniQuery1.SQL.Clear;
UniQuery1.SQL.add('declare @formul varchar(100)');
UniQuery1.SQL.add('set @formul = replace(@formul,genislik,mgenislik');
UniQuery1.SQL.add('set @formul = replace(@formul,yukseklik,myukseklik');
UniQuery1.SQL.add('set @formul = select +@formul+sonuc');
UniQuery1.SQL.add('exec(@formul)');
ShowMessage(UniQuery1sonuc.Text);
mgenislik ve myukseklik yerine değer verirsek sonuç döndürüyor, ama string değişimi yaptığı için değer döndürmüyor.
Sql server session ortamında varchar bir değişkene tırnak içerisinde değer atamanız gerekir.
string işlemleri için şöyle deneyin
UniQuery1.SQL.add( 'set @formul = '+QuotedStr('genislik*yukseklik') );
bu kod ile sql session ortamına string değişkenizin tırnak içerisisinde gidecek.
bunu diğer satırlarada uygulayın
UniConnection1.Connected:=true;
UniQuery1.Active:=true;
qrecete.Active:=true;
sformul:= qreceteformul.Text;
genislik:=1500 ;
yukseklik:=1500 ;
UniQuery1.SQL.Clear;
UniQuery1.SQL.add('declare @formul varchar(100)');
UniQuery1.SQL.add('set @formul = '+QuotedStr(sformul)); //genislik*yukseklik
UniQuery1.SQL.add('set @formul = replace(@formul,genislik,strtofloat(genislik)');
UniQuery1.SQL.add('set @formul = replace(@formul,yukseklik,strtofloat(yukseklik)');
UniQuery1.SQL.add('set @formul = select +@formul+sonuc');
UniQuery1.SQL.add('exec(@formul)');
ShowMessage(UniQuery1sonuc.Text);
Replace yapılan yerdeki genislik yerine string genislik değilde 1500 olan genişlik değerinin gelmesi gerekiyor.
Yorumları: 277
Konuları: 50
Kayıt Tarihi: 05-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.294 Programcı
(19-03-2022, Saat: 20:31)apachi2006 Adlı Kullanıcıdan Alıntı: (19-03-2022, Saat: 20:05)bydelphi Adlı Kullanıcıdan Alıntı: Sql server session ortamında varchar bir değişkene tırnak içerisinde değer atamanız gerekir.
string işlemleri için şöyle deneyin
UniQuery1.SQL.add( 'set @formul = '+QuotedStr('genislik*yukseklik') );
bu kod ile sql session ortamına string değişkenizin tırnak içerisisinde gidecek.
bunu diğer satırlarada uygulayın
UniConnection1.Connected:=true;
UniQuery1.Active:=true;
qrecete.Active:=true;
sformul:= qreceteformul.Text;
genislik:=1500 ;
yukseklik:=1500 ;
UniQuery1.SQL.Clear;
UniQuery1.SQL.add('declare @formul varchar(100)');
UniQuery1.SQL.add('set @formul = '+QuotedStr(sformul)); //genislik*yukseklik
UniQuery1.SQL.add('set @formul = replace(@formul,genislik,strtofloat(genislik)');
UniQuery1.SQL.add('set @formul = replace(@formul,yukseklik,strtofloat(yukseklik)');
UniQuery1.SQL.add('set @formul = select +@formul+sonuc');
UniQuery1.SQL.add('exec(@formul)');
ShowMessage(UniQuery1sonuc.Text);
Replace yapılan yerdeki genislik yerine string genislik değilde 1500 olan genişlik değerinin gelmesi gerekiyor.
Hangi veritabanını kullanıyorsunuz Sql Server Mı
Kalan ömrünün en genç build’indesin.
Counter artar, deadline sabit.
Age++ çalışıyor, rollback yok.
Her yer exception
Yorumları: 698
Konuları: 21
Kayıt Tarihi: 24-03-2017
Rep Puanı: 4.469 Uzman
(19-03-2022, Saat: 19:19)apachi2006 Adlı Kullanıcıdan Alıntı: (19-03-2022, Saat: 17:46)frmman Adlı Kullanıcıdan Alıntı: https://github.com/Crownie88/Delphi-math...Parser.pas
Math sınıfı ekli olmasına rağmen pas dosyasında 94:Stack[0] := Power(Stack[1], Stack[0]);// Power bu satırda hata veriyor.
Kullanımı konusunda bilgi verebilir misiniz?
Şu şekilde kullanabilirsiniz.
uses
MathExpParser;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
xx: TExpressionParser;
sonuc: double;
denklem: string;
x, y: integer;
begin
xx := TExpressionParser.Create();
denklem := 'X+Y+5';
x := 30;
y := 50;
denklem := StringReplace(denklem, 'X', x.ToString, [rfReplaceAll, rfIgnoreCase]);
denklem := StringReplace(denklem, 'Y', y.ToString, [rfReplaceAll, rfIgnoreCase]);
sonuc := xx.ParseExpressionToFloat(denklem);
edit1.Text := denklem; // 30+50+5
edit2.Text := sonuc.ToString; // sonuç 85
xx.Free;
end;
Yorumları: 120
Konuları: 24
Kayıt Tarihi: 03-12-2016
Rep Puanı: 112 Başlangıç
(19-03-2022, Saat: 23:03)frmman Adlı Kullanıcıdan Alıntı: (19-03-2022, Saat: 19:19)apachi2006 Adlı Kullanıcıdan Alıntı: Math sınıfı ekli olmasına rağmen pas dosyasında 94:Stack[0] := Power(Stack[1], Stack[0]);// Power bu satırda hata veriyor.
Kullanımı konusunda bilgi verebilir misiniz?
Şu şekilde kullanabilirsiniz.
uses
MathExpParser;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
xx: TExpressionParser;
sonuc: double;
denklem: string;
x, y: integer;
begin
xx := TExpressionParser.Create();
denklem := 'X+Y+5';
x := 30;
y := 50;
denklem := StringReplace(denklem, 'X', x.ToString, [rfReplaceAll, rfIgnoreCase]);
denklem := StringReplace(denklem, 'Y', y.ToString, [rfReplaceAll, rfIgnoreCase]);
sonuc := xx.ParseExpressionToFloat(denklem);
edit1.Text := denklem; // 30+50+5
edit2.Text := sonuc.ToString; // sonuç 85
xx.Free;
end;
Teşekkürler
|