Wstawianie tekstu do memo z obliczeń.

takisobieprogramista
2016-06-08 19:46
takisobieprogramista
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;
//(..)
edytowany 1x, ostatnio: olesio, 2016-12-13 18:26

Pozostało 580 znaków

2016-06-08 19:51

Rejestracja: 9 lat temu

Ostatnio: 2 minuty temu

0

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

 if  edit1.text < then

Pozostało 580 znaków

takisobieprogramista
2016-06-08 19:56
takisobieprogramista
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;
edytowany 1x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

2016-06-08 20:03

Rejestracja: 9 lat temu

Ostatnio: 2 minuty temu

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ę

edytowany 3x, ostatnio: furious programming, 2016-06-08 20:25

Pozostało 580 znaków

2016-06-08 20:28
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 8 minut temu

Lokalizacja: Tuchów

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.


edytowany 3x, ostatnio: furious programming, 2016-06-08 20:31

Pozostało 580 znaków

takisobieprogramista
2016-06-08 20:40
takisobieprogramista
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ń

Pozostało 580 znaków

2016-06-08 20:47

Rejestracja: 9 lat temu

Ostatnio: 2 minuty temu

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

edytowany 1x, ostatnio: grzegorz_so, 2016-06-08 20:50

Pozostało 580 znaków

takisobieprogramista
2016-06-08 20:52
takisobieprogramista
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ć :/

Pozostało 580 znaków

2016-06-08 21:14

Rejestracja: 16 lat temu

Ostatnio: 1 godzina temu

0

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

Pozostało 580 znaków

takisobieprogramista
2016-06-08 21:23
takisobieprogramista
0

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

Pozostało 580 znaków

2016-06-08 21:25
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 8 minut temu

Lokalizacja: Tuchów

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.


edytowany 2x, ostatnio: furious programming, 2016-06-08 21:27

Pozostało 580 znaków

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