procedure TForm1.Button1Click(Sender: TObject);
Var islem,ilk,son,ikinci,sonuc:integer;
begin
islem:=pos('+', edit1.Text); // + karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer + karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk+son; // topluyor
edit1.Text:= edit1.Text + '=' + inttostr(sonuc);
end;// toplama işlemi varsa
islem:=pos('-', edit1.Text); // - karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer - karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk-son; // çıkartıyor
edit1.Text:= edit1.Text + '=' + inttostr(sonuc);
end; // çıkartma işlemi varsa
islem:=pos('/', edit1.Text); // / karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer / karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk/son; // boluyor //(hatayı burda verıyor )
edit1.Text:= edit1.Text + '=' + inttostr(sonuc);//(sonrada burda hata verme başlıyor)
end; // bolme işlemi varsa
islem:=pos('*', edit1.Text); // * karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer * karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk*son; // çarpıyor
edit1.Text:= edit1.Text + '=' + inttostr(sonuc);
end; // çarpma işlemi varsa
//veya çarpma olarak 'x' karakteride kullanılmış olabilir
islem:=pos('x', edit1.Text); // x karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer x karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk*son; // çarpıyor
edit1.Text:= edit1.Text + '=' + inttostr(sonuc);
end; // çarpma işlemi varsa
end;
esistem'e ve diger degerli hocalarıma,bilginlere teşekkür ederim
ama esiştem aceba hatayı neden veriyor olabilir ben bir yazım ve kod yanlışı bulamadım ama bolumun sonucunda hata vermeye baslıyor
Muhtemelen sonuc değişkenin integer olduğundan bölüm double ile sonuçlandığında veriyordur. Ama ısrarla ne hata verdiğini yazmamışsın, arkadaşlar neye göre cevap versinler değil mi?
Bir dahaki soruna cevap verecek inceliği gösteren bu arkadaşları bulmak istiyorsan biraz aklınızı çalıştırın.
Bölme işleminde 4 / 2 yap bakalım aynı hata olacak mı? Sorgulayın bakalım, öyle armut piş olmasın.
Selam;
Ben, senin yazdığın kodu alıp kopyaladım sadece, fakat @mrmarman hocamın dediği gibi birçok şeyden hata verebilir, hatayı yazsaydın bi sonuca varabilirdik. Kodda hata verebilecek bir sürü yer var, mesela değerlerin hepsi inttostr ile çevriliyor, sıfır'a bölme hatası kontrol edilmemiş, virgüllü yada noktalı değer girişleri kontrol edilmemiş vs.vs. Bu olayda işi ileriye götürüp aynı edite yazılan ((12+5)/6)*4 gibi bir işlem yumağınıda kontrol edebilirsin.
teşekür ederim peki bunu ben nasıl duzeltecegım ve ben delphiyi daha yeni duyuyorum ve buu sebeptende hic bilmiyorum zaten bende bir tasarımcıyım sadece tasarım yapıyorum ama bu sene ole bir ders verildi hiç bişey anlıyamıyorum
yardımcı olabilirseniz sevinirım
Tasarımcı kimliğini kullan gördüğün hatayı yazıyla ifade edebilirsin. Nasıl mı hata ekranında ne yazıyorsa buraya yazarak. Bak ne kadar kolay... İngilizce bilmiyor olabilirsin, işi bilenlere bırak.
O da zor gelirse ekran görüntüsü yakala burada o resmi yayınlarsın.
Var
islem,ilk,son,ikinci:integer;
sonuc:real;
begin
islem:=pos('+', edit1.Text); // + karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer + karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk+son; // topluyor
edit1.Text:= edit1.Text + '=' + FloatToStr(sonuc);
end;// toplama işlemi varsa
islem:=pos('-', edit1.Text); // - karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer - karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk-son; // çıkartıyor
edit1.Text:= edit1.Text + '=' + FloatToStr(sonuc);
end; // çıkartma işlemi varsa
islem:=pos('/', edit1.Text); // / karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer / karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk/son; // boluyor //(hatayı burda verıyor )
edit1.Text:= edit1.Text + '=' + FloatToStr(sonuc);//(sonrada burda hata verme başlıyor)
end; // bolme işlemi varsa
islem:=pos('*', edit1.Text); // * karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer * karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk*son; // çarpıyor
edit1.Text:= edit1.Text + '=' + FloatToStr(sonuc);
end; // çarpma işlemi varsa
//veya çarpma olarak 'x' karakteride kullanılmış olabilir
islem:=pos('x', edit1.Text); // x karakterinin text içersindeki pozisyonunu (kaçıncı karakter olduğunu buluyor)
if islem>0 then begin // eğer x karakteri varsa işlemleri yapıyor
label3.Caption:=inttostr(islem);
ilk:=strtoint(copy(edit1.Text,1,islem-1));
label1.Caption:=inttostr(ilk);
ikinci:=length(edit1.Text)-islem;
son:=strtoint(copy(edit1.Text,islem+1,ikinci));
label2.Caption:=inttostr(son);
sonuc:=ilk*son; // çarpıyor
edit1.Text:= edit1.Text + '=' + FloatToStr(sonuc);
end; // çarpma işlemi varsa
ben stringgrind ile hesap makinesi nasıl yapabilirim aceba bende toplamanın kodlar var ama hep hata veriyor 3 adet stringrind olmalı ilkinde ilk sayı 2.de ise ikincı sayı ve 3.de ise toplamlarını yazan stringgrindler olmalı hepsının kodları ise bitbutona yazılmalı ama toplama icin yaptıgımda nedese kodta hata var anlıyamadımm ve sıze zorma geregı duydum yardımcı olabilirseniz cok sevinirim şimdiden çok tesekkür ediyorum