Обычный калькулятор на Паскале.
Калькулятор как калькулятор,правда не смейтесь с кода я писал его довольно давно на заре начинания в азах программирования сейчас бы я уж точно так не написал бы )))
Для начинающих думаю сгодится хотя бы даже как пример как не стоит писать калькулятор.
Код ниже а не понятные места возможно я разберу в следующей статье
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls,Math, Menus;
type
TForm1 = class(TForm)
Edit1: TEdit;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton12: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton14: TSpeedButton;
SpeedButton15: TSpeedButton;
SpeedButton16: TSpeedButton;
SpeedButton17: TSpeedButton;
SpeedButton18: TSpeedButton;
SpeedButton19: TSpeedButton;
SpeedButton20: TSpeedButton;
SpeedButton21: TSpeedButton;
SpeedButton22: TSpeedButton;
SpeedButton23: TSpeedButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton16Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton14Click(Sender: TObject);
procedure SpeedButton15Click(Sender: TObject);
procedure SpeedButton12Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure SpeedButton13Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton11Click(Sender: TObject);
procedure SpeedButton17Click(Sender: TObject);
procedure SpeedButton18Click(Sender: TObject);
procedure SpeedButton19Click(Sender: TObject);
procedure SpeedButton20Click(Sender: TObject);
procedure SpeedButton21Click(Sender: TObject);
procedure SpeedButton22Click(Sender: TObject);
procedure SpeedButton23Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
plus,minus,del,umnoj:boolean;
a,b:real;
st:string;
r:real; //result operation
kn:tspeedbutton;
memory:string;//закинем в память
Procedure GetOp;
var str:string;
i:integer;
pos_op:integer;
a_,b_:string;
begin
With Form1 do
begin
str:=edit1.Text;
For i:=0 to Length(str) do
begin
if str[i]='+' then
plus:=true;
if str[i]='-' then
minus:=true;
if str[i]='*' then
umnoj:=true;
if str[i]='/' then
del:=true;
end;
if plus then
pos_op:=pos('+',str);
if minus then
pos_op:=pos('-',str);
if del then
pos_op:=pos('/',str);
if umnoj then
pos_op:=pos('*',str);
a_:=copy(str,1,pos_op-1);
b_:=copy(str,pos_op+1,length(str));
a:=strtofloat(a_);
b:=strtofloat(b_);
end;
end;
Procedure Calc;
begin
if plus then
r:=a+b;
if minus then
r:=a-b;
if del then
begin
if b=0 then
form1.Edit1.Text:='del na zero!'
else
r:=a / b;
end;
if umnoj then
r:=a * b;
end;
Procedure FormatEnter;
var buffer,buffer2:string;
i:integer;
d:string;
begin
d:=form1.Edit1.Text;
if length(d)=3 then
buffer:=d;
if length(d)=6 then
buffer2:=d;
if buffer2='' then
r:=strtofloat(buffer)
else r:=strtofloat(buffer+''+buffer2);
end;
procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
close;
end;
procedure TForm1.SpeedButton16Click(Sender: TObject);
var c:integer;
buffer,buffer2 :string;
i,j:integer;
dec:array of real;
res,s:string;
begin
getop;
calc;
edit1.Clear;
setlength(dec,20);
s:=floattostr(r);
//res:=(buffer+''+buffer2);
edit1.Text:=buffer+''+buffer2;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'+';
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'-';
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'*';
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'/';
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'0';
end;
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'1';
end;
procedure TForm1.SpeedButton10Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'2';
end;
procedure TForm1.SpeedButton14Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'3';
end;
procedure TForm1.SpeedButton15Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'4';
end;
procedure TForm1.SpeedButton12Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'5';
end;
procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'6';
end;
procedure TForm1.SpeedButton13Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'7';
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'8';
end;
procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'9';
end;
procedure TForm1.SpeedButton17Click(Sender: TObject);
begin
edit1.Clear;
st:='';
end;
procedure TForm1.SpeedButton18Click(Sender: TObject);
var q:real;
begin
q:=strtofloat(edit1.Text);
if q=0 then exit
else
q:= sqr(q);
edit1.Clear;
edit1.Text:=floattostr(q);
end;
procedure TForm1.SpeedButton19Click(Sender: TObject);
var q:real;
begin
q:=strtofloat(edit1.Text);
if q=0 then exit
else
q:= sqrt(q);
edit1.Clear;
edit1.Text:=floattostr(q);
end;
procedure TForm1.SpeedButton20Click(Sender: TObject);
begin
memory:=edit1.text;
speedbutton20.Flat:=false;
end;
procedure TForm1.SpeedButton21Click(Sender: TObject);
begin
edit1.Text:=memory;
speedbutton20.Flat:=true;
end;
procedure TForm1.SpeedButton22Click(Sender: TObject);
begin
memory:='';
speedbutton20.Flat:=false;
end;
procedure TForm1.SpeedButton23Click(Sender: TObject);
begin
edit1.Text:='3,1415926535897932384626433832795';
end;
procedure TForm1.N1Click(Sender: TObject);
begin
edit1.SelectAll;
edit1.CopyToClipboard;
end;
end.
Калькулятор как калькулятор,правда не смейтесь с кода я писал его довольно давно на заре начинания в азах программирования сейчас бы я уж точно так не написал бы )))
Для начинающих думаю сгодится хотя бы даже как пример как не стоит писать калькулятор.
Код ниже а не понятные места возможно я разберу в следующей статье
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls,Math, Menus;
type
TForm1 = class(TForm)
Edit1: TEdit;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton12: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton14: TSpeedButton;
SpeedButton15: TSpeedButton;
SpeedButton16: TSpeedButton;
SpeedButton17: TSpeedButton;
SpeedButton18: TSpeedButton;
SpeedButton19: TSpeedButton;
SpeedButton20: TSpeedButton;
SpeedButton21: TSpeedButton;
SpeedButton22: TSpeedButton;
SpeedButton23: TSpeedButton;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton16Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton14Click(Sender: TObject);
procedure SpeedButton15Click(Sender: TObject);
procedure SpeedButton12Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure SpeedButton13Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton11Click(Sender: TObject);
procedure SpeedButton17Click(Sender: TObject);
procedure SpeedButton18Click(Sender: TObject);
procedure SpeedButton19Click(Sender: TObject);
procedure SpeedButton20Click(Sender: TObject);
procedure SpeedButton21Click(Sender: TObject);
procedure SpeedButton22Click(Sender: TObject);
procedure SpeedButton23Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
plus,minus,del,umnoj:boolean;
a,b:real;
st:string;
r:real; //result operation
kn:tspeedbutton;
memory:string;//закинем в память
Procedure GetOp;
var str:string;
i:integer;
pos_op:integer;
a_,b_:string;
begin
With Form1 do
begin
str:=edit1.Text;
For i:=0 to Length(str) do
begin
if str[i]='+' then
plus:=true;
if str[i]='-' then
minus:=true;
if str[i]='*' then
umnoj:=true;
if str[i]='/' then
del:=true;
end;
if plus then
pos_op:=pos('+',str);
if minus then
pos_op:=pos('-',str);
if del then
pos_op:=pos('/',str);
if umnoj then
pos_op:=pos('*',str);
a_:=copy(str,1,pos_op-1);
b_:=copy(str,pos_op+1,length(str));
a:=strtofloat(a_);
b:=strtofloat(b_);
end;
end;
Procedure Calc;
begin
if plus then
r:=a+b;
if minus then
r:=a-b;
if del then
begin
if b=0 then
form1.Edit1.Text:='del na zero!'
else
r:=a / b;
end;
if umnoj then
r:=a * b;
end;
Procedure FormatEnter;
var buffer,buffer2:string;
i:integer;
d:string;
begin
d:=form1.Edit1.Text;
if length(d)=3 then
buffer:=d;
if length(d)=6 then
buffer2:=d;
if buffer2='' then
r:=strtofloat(buffer)
else r:=strtofloat(buffer+''+buffer2);
end;
procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
close;
end;
procedure TForm1.SpeedButton16Click(Sender: TObject);
var c:integer;
buffer,buffer2 :string;
i,j:integer;
dec:array of real;
res,s:string;
begin
getop;
calc;
edit1.Clear;
setlength(dec,20);
s:=floattostr(r);
//res:=(buffer+''+buffer2);
edit1.Text:=buffer+''+buffer2;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'+';
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'-';
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'*';
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'/';
end;
procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'0';
end;
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'1';
end;
procedure TForm1.SpeedButton10Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'2';
end;
procedure TForm1.SpeedButton14Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'3';
end;
procedure TForm1.SpeedButton15Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'4';
end;
procedure TForm1.SpeedButton12Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'5';
end;
procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'6';
end;
procedure TForm1.SpeedButton13Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'7';
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'8';
end;
procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
if edit1.Text <> '' then
st:=edit1.Text;
edit1.Text:=st+'9';
end;
procedure TForm1.SpeedButton17Click(Sender: TObject);
begin
edit1.Clear;
st:='';
end;
procedure TForm1.SpeedButton18Click(Sender: TObject);
var q:real;
begin
q:=strtofloat(edit1.Text);
if q=0 then exit
else
q:= sqr(q);
edit1.Clear;
edit1.Text:=floattostr(q);
end;
procedure TForm1.SpeedButton19Click(Sender: TObject);
var q:real;
begin
q:=strtofloat(edit1.Text);
if q=0 then exit
else
q:= sqrt(q);
edit1.Clear;
edit1.Text:=floattostr(q);
end;
procedure TForm1.SpeedButton20Click(Sender: TObject);
begin
memory:=edit1.text;
speedbutton20.Flat:=false;
end;
procedure TForm1.SpeedButton21Click(Sender: TObject);
begin
edit1.Text:=memory;
speedbutton20.Flat:=true;
end;
procedure TForm1.SpeedButton22Click(Sender: TObject);
begin
memory:='';
speedbutton20.Flat:=false;
end;
procedure TForm1.SpeedButton23Click(Sender: TObject);
begin
edit1.Text:='3,1415926535897932384626433832795';
end;
procedure TForm1.N1Click(Sender: TObject);
begin
edit1.SelectAll;
edit1.CopyToClipboard;
end;
end.
Олег, здравствуйте. Я попала сюда по запросу о программировании в фотошопе, мне интересно возможно ли такое на подобии макросов в ворде. Ликбес читать не надо, в курсе.
ОтветитьУдалитьУточняю: в ворде я записываю макрос, т.е. какую-то последовательность действий, которую могу потом воспроизвести. Аналогично, могу в фотошопе записать Экшен. В ворде я могу зайти в редактор с программным кодом и подправить на свое усмотрение. Могу ли я тоже самое сделать в фотошопе?... реально что-то мне нигде инфы в инете не найти, либо нет ничего, либо статьи удалены.
Да насколько мне известно были только экшены макросов вроде бы не было, хотя за последними версиями не следил может что-то и появилось, когда необходимо было обработать несколько десятков фото то пробывал экшен делать но так и не получилось
ОтветитьУдалить