Wstawianie tekstu do memo z obliczeń.

0

Hej, jestem początkująca i próbuję zrobić taką historię działań do kalkulatora, no i do memo chciałam wstawić obliczane liczby, ale wywala mi błąd, że niepoprawny zapis, czy coś takiego.
Jakoś inaczej można to zapisać?

//(..)
procedure TForm1.Button16Click(Sender: TObject);
begin
if  edit1.text <> '' then
  begin
    l1:=strtofloat(edit1.text);
    edit1.text:='';
    kl:=1;
  end;
end;

procedure TForm1.Button18Click(Sender: TObject);
begin
l2:=strtofloat(edit1.text);;
edit1.text:='';
case kl of
  1:
    begin
      w:=l1+l2;

      menu1.Lines.Add(''+inttostr(l1));
      menu1.Lines.Add('+'+inttostr(l2));
      menu1.Lines.Add('='+inttostr(w));

      edit1.text:=floattostr(w);

    end;
  2:
    begin
      w:=l1-l2;
      edit1.text:=floattostr(w);
    end;

    end;
end;
//(..)
0

taki kod to nawet nie da się skompilować
co to jest ...

 if  edit1.text < then
0

sorki, ucieło mi trochę kodu :/ i to nie jest cały kod, tylko kawałek
nie wiem czy w ogóle dobrze to zapisałam :/

procedure TForm1.Button16Click(Sender: TObject);
begin
if  edit1.text <> '' then
  begin
    l1:=strtofloat(edit1.text);
    edit1.text:='';
    kl:=1;
  end;
end;

procedure TForm1.Button18Click(Sender: TObject);
begin
l2:=strtofloat(edit1.text);;
edit1.text:='';
case kl of
  1:
    begin
      w:=l1+l2;
memo1.Lines.Add(''+inttostr(l1);
memo1.Lines.Add('+'+inttostr(l2);
memo1.Lines.Add('='+inttostr(w);
      edit1.text:=floattostr(w);

    end;
  2:
    begin
      w:=l1-l2;
      edit1.text:=floattostr(w);
    end;
end;
0
l1:=strtofloat(edit1.text);

bez dodatkowych ogranczeń typu numbersonly=true obiekt edit przyjmie wszystko , każdy znak , a jego własność '.txt' niekoniecznie musi być konwertowalny przy pomocy funkcji "strtofloat" na liczbę

0
takisobieprogramista napisał(a)

[...] ale wywala mi błąd, że niepoprawny zapis, czy coś takiego.

Nie łaska wkleić treści błędu?

Poza tym jeśli chcesz wyłapać błąd i go odpowiednio na niego zareagować to albo użyj bloku Try Except i selektywnej obsługi wyjątków, albo skorzystaj z funkcji TryStrToFloat; Te dwa sposoby są różne, dając mniejszą lub większą kontrolę błędów.

0

"There's no overloaded version of 'IntToStr' that can be called with these arguments"
"For loop control variable must be simple local variable"
Może już być?

no i w edit1 pokazuje liczby jak w kalkulatorze, a w memo, by była cała historia obliczeń

0

"There's no overloaded version of 'IntToStr' that can be called with these arguments"
czyli nieprawidłowe co do typu argumenty funkcji
w kodzie który przedstawiłaś nie używasz funkcji 'IntToStr'
pokaż cały kod

0

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Math, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    Button19: TButton;
    Button20: TButton;
    Button21: TButton;
    Button22: TButton;
    Button23: TButton;
    Button24: TButton;
    Button25: TButton;
    Button26: TButton;
    Button27: TButton;
    RadioGroup1: TRadioGroup;
    Button28: TButton;
    Button29: TButton;
    memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure Button22Click(Sender: TObject);
    procedure Button23Click(Sender: TObject);
    procedure Button24Click(Sender: TObject);
    procedure Button25Click(Sender: TObject);
    procedure Button26Click(Sender: TObject);
    procedure Button27Click(Sender: TObject);
    procedure Button28Click(Sender: TObject);
    procedure Button29Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  l1,l2,w,rad:real;
  kl,i,sil,n,x,y,z,pot:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'3';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'4';
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'5';
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'6';
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'7';
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'8';
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'9';
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'0';
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+',';
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
if  edit1.text <> '' then
  begin
    l1:=strtofloat(edit1.text);
    edit1.text:='+';
    kl:=1;
  end;
end;

procedure TForm1.Button17Click(Sender: TObject);
begin
l1:=strtofloat(edit1.text);
edit1.text:='-';
kl:=2;
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
l1:=strtofloat(edit1.text);
edit1.text:='';
kl:=3;
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
if  edit1.text <> '' then
  begin
    l1:=strtofloat(edit1.text);
    edit1.text:='';
    kl:=4;
  end;
end;

procedure TForm1.Button18Click(Sender: TObject);
begin
l2:=strtofloat(edit1.text);;
edit1.text:='';
case kl of
  1:
    begin
      w:=l1+l2;
memo1.Lines.Add(''+inttostr(l1);
memo1.Lines.Add('+'+inttostr(l2);
memo1.Lines.Add('='+inttostr(w);
      edit1.text:=floattostr(w);
    end;
  2:
    begin
      w:=l1-l2;
      edit1.text:=floattostr(w);
    end;
  3:
    begin
      w:=l1*l2;
      edit1.text:=floattostr(w);
    end;
  4:
    begin
      w:=l1/l2;
      edit1.text:=floattostr(w);
    end;
  5:
    begin
      w:=l1*l2*0.01;
      edit1.text:=floattostr(w);
    end;
    end;
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
 edit1.text:='';
 l1:=0;
 l2:=0;
 w:=0;
 kl:=0;
 rad:=0;
end;

procedure TForm1.Button19Click(Sender: TObject);
begin
     l1:=strtofloat(edit1.text);
     w:=1/l1;
     edit1.text:=floattostr(w);
end;

procedure TForm1.Button20Click(Sender: TObject);
begin
l1:=strtofloat(edit1.text);
w:=-1*l1;
edit1.text:=floattostr(w);
end;

procedure TForm1.Button21Click(Sender: TObject);
begin
l1:=strtofloat(edit1.text);
edit1.text:='';
w:=sqrt(l1);
edit1.Text:=floattostr(w);
end;

procedure TForm1.Button22Click(Sender: TObject);
begin
l1:=strtofloat(edit1.text);
edit1.text:='';
w:=l1*l1;
edit1.Text:=floattostr(w);

end;

procedure TForm1.Button23Click(Sender: TObject);
begin
l1:=strtofloat(edit1.text);
edit1.text:='';
kl:=5
end;

procedure TForm1.Button24Click(Sender: TObject);
begin
 l1:=strtofloat(edit1.text);
if radioGroup1.ItemIndex=0 then
  begin
    rad:=l1*3.14/180;
    w:=sin(rad);
    edit1.Text:=floattostr(w);
  end
else
  begin
    w:=sin(l1);
    edit1.Text:=floattostr(w);
  end;

end;

procedure TForm1.Button25Click(Sender: TObject);
begin
l1:=strtofloat(edit1.text);
  if radioGroup1.ItemIndex=0 then
  begin
    rad:=l1*3.14/180;
    w:=cos(rad);
    edit1.Text:=floattostr(w);
  end
else
  begin
    w:=cos(l1);
    edit1.Text:=floattostr(w);
  end;
end;

procedure TForm1.Button26Click(Sender: TObject);
begin
l1:=strtofloat(edit1.text);
  rad:=l1*3.14/180;
  w:=sin(rad)/cos(rad);
  edit1.Text:=floattostr(w);
end;

procedure TForm1.Button27Click(Sender: TObject);
begin
  l1:=strtofloat(edit1.text);
  rad:=l1*3.14/180;
  w:=cos(rad)/sin(rad);
  edit1.Text:=floattostr(w);

end;

procedure TForm1.Button28Click(Sender: TObject);
begin
n:=strtoint(edit1.text);
sil:=1;
for i:=1 to n do
begin
sil:=sil*i;
end;
edit1.Text:=floattostr(sil);
end;

procedure TForm1.Button29Click(Sender: TObject);
begin
x:=strtoint(edit1.text);
y:=strtoint(inputbox('Dane','Podaj liczbe','0'));
pot:=1;
for i:=1 to y do
begin
pot:=pot*x;
end;
edit1.Text:=floattostr(pot);
end;

end.

wiem że obeszłoby się bez memo1, ale no historię wszystkich obliczeń chce mieć w nim, tylko coś nie wychodzi mi, a nic nie mogę innego wymyślić :/

0

Zamiast IntToStr i FloatToStr użyj TryStrToInt i TryStrToFloat...

0

wyświetla się: incompatible types: 'string' and 'real'
czyli nie będzie :/

0

Poza tym zamień ten kod:

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'1';
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'2';
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'3';
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'4';
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'5';
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'6';
end;
 
procedure TForm1.Button7Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'7';
end;
 
procedure TForm1.Button8Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'8';
end;
 
procedure TForm1.Button9Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'9';
end;
 
procedure TForm1.Button10Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'0';
end;
 
procedure TForm1.Button11Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+',';
end;

na ten:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + Chr((Sender as TButton).Tag);
end;

Podłącz takie zdarzenie pod wszystkie przyciski z cyframi oraz pod przycisk z przecinkiem; Aby to zadziałało, właściwość Tag tych przycisków musi zawierać kody ASCII odpowiednich znaków, czyli kody od 48 do 57 dla cyfr oraz kod 44 dla znaku przecinka; Dzięki temu program skróci się o połowę;

I zacznij nadawać nazwy komponentom, bo patrząc na kod kompletnie nie wiadomo do czego służą te przyciski (i nie tylko);

wyświetla się: incompatible types: 'string' and 'real'

Wklejaj kod jak wystąpi błąd kompilacji, bo nie wiadomo co masz w edytorze i nikomu nie będzie się chciało zgadywać; Dokładna treść błędu i linijka, w której ten błąd występuje.

0

a jakby zamiast 'inttostr' dać 'floattostr'?

0

Krótko Ci odpowiem: pieprzysz głupoty aż milo. Nawet nie chce mi się zgadywać co zrobiłeś źle, ale mam wrażenie że piszesz na pąłę nie czytając dokumentacji. Ba, nawet ctrl+space nie wcisnąłeś przy funkcji TryTo...

Weź no spakuj ten cały projekt i wrzuć go tu, to Ci go poprawię.
Może...

0

ale ja wiem, więc nie dodaje nazw, a to że długie, to dla mnie nie ma znaczenia, wystarczy że będzie działać.

0

Podaj linikę, która powoduje błąd incompatible types: 'string' and 'real';

Wątek przenoszę do Newbie, bo widzę, że poruszany problem dotyczy podstaw języka.

0
wloochacz napisał(a):

Krótko Ci odpowiem: pieprzysz głupoty aż milo. Nawet nie chce mi się zgadywać co zrobiłeś źle, ale mam wrażenie że piszesz na pąłę nie czytając dokumentacji. Ba, nawet ctrl+space nie wcisnąłeś przy funkcji TryTo...

Weź no spakuj ten cały projekt i wrzuć go tu, to Ci go poprawię.
Może...

tak więc nie trzeba już poprawiać, dałam radę sama, no i stara tak jak ty nie jestem więc to dopiero początek mój programowania, przez co błędy popełniam, ale już zrobiłam to co chciałam zrobić i znalazłam tą swoją "głupotę", więc nie musisz z litości mi tego już poprawiać!

0
furious programming napisał(a):

Podaj linikę, która powoduje błąd incompatible types: 'string' and 'real';

Wątek przenoszę do Newbie, bo widzę, że poruszany problem dotyczy podstaw języka.

to trzeba było być na bieŻąco (Boże, widzisz takie błędy i nie grzmisz) w temacie, jak nie wiedziałeś gdzie problem leży

1 użytkowników online, w tym zalogowanych: 0, gości: 1