|
#16
|
|||
|
|||
Цитата:
А мне еще бросилось в глаза, что нет: 1. Приверки, что ',' уже есть. 2. Тоже самое для - и + 3. Ну и обработчики цифирь... о чем уже сказали и это просто при очень беглом просмотре. Самое печальное, что о таких вещах (не конкретно об отсутсвующих проверках, а о правильном проектировании алгоритмов /не совсем так, но лучших слов не могу навскидку подобрать/) в книжках не пишут. Это потом народ на собственных ошибках учится. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
UnrealFire (08.09.2012)
|
#17
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#18
|
||||
|
||||
новичку в чужом коде разобраться сложно. смотрел инженерный, ничего не понял
|
#19
|
||||
|
||||
с сдвигом разобрался, на висте не было нужного шрифта Myriad Pro Light.
Поменял на майкрософтовский. Установлю Myriad Pro Light скажу как работает. |
#20
|
||||
|
||||
Цитата:
Код:
procedure TForm1.SpeedButton9Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton10Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton11Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton5Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton6Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton7Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton2Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton3Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton12Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton8Click(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; |
#21
|
||||
|
||||
Цитата:
Делаешь один такой обработчик: Код:
procedure TForm1.SpeedButtonNumberClick(Sender: TObject); begin edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; end; |
#22
|
||||
|
||||
сори, даже не знал что так можно. спасибо. Буду дальше совершенствовать код.
|
#23
|
||||
|
||||
Копец вы извращениями занимаетесь, в твоем случае можно на все кнопки навесить один обработчик, а то сплошное дублирование кода.
Добавлено на 10 секунд раньше Упс, уже ответили так же — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#24
|
||||
|
||||
Вопросик созрел. Имеется процедура, работает исключително с общими переменными. Нужно ее вызвать, но без ввода параметров не вызывается.
Как это решить? Пробовал через функции, но он вывел кучу ошибок, вроде я неправильно вообще обьявил. Обьявлял как в паскале. Напишите как это обьявлять. |
#25
|
||||
|
||||
Цитата:
|
#26
|
||||
|
||||
Цитата:
Цитата:
Код:
procedure Proc(XX: Integer; YY: Integer = 15); begin // end; procedure TForm1.Button1Click(Sender: TObject); begin // Эту процедуру можно вызвать так: Proc(10, 20); // А можно вызвать так: Proc(10); // При этом фактически она будет вызвана так: Proc(10, 15); // Т.е. второй параметр всё-равно будет введён в процедуру, но скрытно, и явно его вводить не нужно end; Цитата:
Цитата:
|
#27
|
||||
|
||||
1 вопрос. сделал так:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls, Buttons; type TForm1 = class(TForm) Logo: TImage; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; SpeedButton9: TSpeedButton; SpeedButton10: TSpeedButton; SpeedButton11: TSpeedButton; SpeedButton12: TSpeedButton; SpeedButton13: TSpeedButton; SpeedButton14: TSpeedButton; SpeedButton15: TSpeedButton; SpeedButton17: TSpeedButton; SpeedButton18: TSpeedButton; SpeedButton19: TSpeedButton; SpeedButton4: TSpeedButton; Edit2: TEdit; SpeedButton16: TSpeedButton; SpeedButton20: TSpeedButton; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; SpeedButton21: TSpeedButton; Label1: TLabel; Label2: TLabel; SpeedButton22: TSpeedButton; SpeedButton23: TSpeedButton; SpeedButton24: TSpeedButton; SpeedButton25: TSpeedButton; background: TImage; SpeedButton26: TSpeedButton; procedure SpeedButtonDeystvieClick(Sender: TObject); procedure SpeedButton17Click(Sender: TObject); procedure SpeedButton20Click(Sender: TObject); procedure SpeedButton21Click(Sender: TObject); procedure SpeedButton22Click(Sender: TObject); procedure SpeedButton23Click(Sender: TObject); procedure SpeedButton24Click(Sender: TObject); procedure SpeedButton25Click(Sender: TObject); procedure SpeedButton26Click(Sender: TObject); procedure SpeedButtonNumberClick(Sender: TObject); procedure SpeedButtonRavnoClick(Sender: TObject); procedure SpeedButtonRazdelitelClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; input,input2,output,prozent:real; znachenie:string; deystvie:boolean=false; razdelitel:boolean=false; ravno:boolean=false; implementation {$R *.dfm} function ShellExecute (hWnd: HWND; Operation, FileName, Parameters, Directory: PAnsiChar; ShowCmd: Integer): LongWord; stdcall; external 'Shell32.dll' name 'ShellExecuteA'; procedure TForm1.SpeedButtonNumberClick(Sender: TObject); begin if edit2.Text='0' then edit2.Text:=''; if deystvie=true then begin edit2.Text:=''; deystvie:=false; end; if ravno=true then begin edit2.Text:=''; ravno:=false; end; edit2.Text:=edit2.Text + (Sender as TSpeedButton).Caption; {Если стоит ноль, то он удаляется; Если действие нажато то удаляется всё поле и действие=фалс; Edit2.Text:=Edit2.Text+текст на клавише; } end; procedure TForm1.SpeedButtonDeystvieClick(Sender: TObject); begin if deystvie=false then begin input:=strtofloat(edit2.Text); znachenie:=(Sender as TSpeedButton).Caption; deystvie:=true; end else begin input:=strtofloat(edit2.Text); znachenie:=(Sender as TSpeedButton).Caption; end; razdelitel:=false; {Если действие=фалс то значение=текст на клавише; действие=тру; Иначе инпут=вещ. от edit2.Text; значение = текст на клавише; } end; procedure TForm1.SpeedButtonRavnoClick(Sender: TObject); begin input2:=strtofloat(edit2.Text); if znachenie='+' then output:=input+input2; if znachenie='-' then output:=input-input2; if znachenie='*' then output:=input*input2; if znachenie='/' then output:=input/input2; if znachenie='%' then output:=input*input2/100; if znachenie='^' then begin input:=output; if input2=0 then begin edit2.Text:='0'; end; while input2>1 do begin output:=output*input; input2:=input2-1; end; {Возведение в степень} end; edit2.Text:=floattostr(output); ravno:=true; {input2:=вещ. от edit2.Text; в зависимости от значения присваивается output; output выводится в edit2.Text; } end; procedure TForm1.SpeedButtonRazdelitelClick(Sender: TObject); begin if razdelitel=false then begin edit2.Text:=edit2.Text+(Sender as TSpeedButton).Caption; razdelitel:=true; end; {Проверка на наличие запятой в цифре} end; procedure TForm1.SpeedButton17Click(Sender: TObject); begin input:=strtofloat(edit2.text); output:=sqrt(input); edit2.Text:=floattostr(output); {извлечение квадратного корня} end; procedure TForm1.SpeedButton20Click(Sender: TObject); begin Edit2.Text:='0'; Edit4.Text:='0'; Edit5.Text:='0'; Edit6.Text:='0'; Edit7.Text:='0'; Edit8.Text:='0'; {CE} end; procedure TForm1.SpeedButton21Click(Sender: TObject); var a,b,c,x1,x2,d,p:real; begin a:=strtofloat(edit4.Text); b:=strtofloat(edit6.Text); c:=strtofloat(edit5.Text); if a=0 then begin ShowMessage('a=0. Неверноное значение a'); end; d:=(b*b)-(4*a*c); if d<0 then begin ShowMessage('Уравнение не имеет корней'); end; p:=sqrt(d); x1:=(-b+p)/(2*a); x2:=(-b-p)/(2*a); edit8.Text:='X1='+floattostr(x1); edit7.Text:='X2='+floattostr(x2); {Решение кв.уранения} end; procedure TForm1.SpeedButton26Click(Sender: TObject); begin ShellExecute(0, 'open', 'Calc by UnrealFire.chm','','', sw_show); end; {Ниже синус, косинус, тангенс и радианы из угла} procedure TForm1.SpeedButton22Click(Sender: TObject); var g,r,s:real; s2:string; begin g:=strtofloat(edit2.Text); if (g>360) or (g=360) then begin g:=g-360; end; r:=PI*g/180; s:=sin(r); s2:=floattostr(s); if (g=0) or (g=180) then begin s2:='0'; end; if (g=90) or (g=270) then begin s2:='1'; end; if (g=30) or (g=210) then begin s2:='1/2'; end; if (g=45) or (g=225) then begin s2:='(Квадратный корень от 2)/2'; end; if (g=60) or (g=240) then begin s2:='(Квадратный корень от 3)/2'; end; edit2.Text:=s2; end; procedure TForm1.SpeedButton23Click(Sender: TObject); var g,r,c:real; c2:string; begin g:=strtofloat(edit2.Text); if (g>360) or (g=360) then begin g:=g-360; end; r:=PI*g/180; c:=cos(r); c2:=floattostr(c); if (g=0) or (g=180) then begin c2:='1'; end; if (g=90) or (g=270) then begin c2:='0'; end; if (g=30) or (g=210) then begin c2:='(Квадратный корень от 3)/2'; end; if (g=45) or (g=225) then begin c2:='(Квадратный корень от 2)/2'; end; if (g=60) or (g=240) then begin c2:='1/2'; end; edit2.Text:=c2; end; procedure TForm1.SpeedButton24Click(Sender: TObject); var g,r,t,c,s:real; t2:string; begin g:=strtofloat(edit2.Text); if (g>360) or (g=360) then begin g:=g-360; end; r:=PI*g/180; c:=Cos(r); s:=Sin(r); t:=s/c; t2:=floattostr(t); if (g=0) or (g=180) then begin t2:='0'; end; if (g=90) or (g=270) then begin t2:='Не определён'; end; if (g=30) or (g=210) then begin t2:='(Квадратный корень от 3)/3'; end; if (g=45) or (g=225) then begin t2:='1'; end; if (g=60) or (g=240) then begin t2:='Квадратный корень от 3'; end; edit2.Text:=t2; end; procedure TForm1.SpeedButton25Click(Sender: TObject); var g,r:real; begin g:=strtofloat(edit2.Text); r:=g*PI/180; edit2.Text:=floattostr(r); end; end. при нажатии возведении в степень выводится 0. если например сделать вначале любое другое действие, скажем прибавить то всё работает. Где у меня ошибка? 2.И все таки подскажите как в этом случае оформить функцию возведения в степень. 3. При возведении в степень 2 числа 625 выводится floating point overflow. что это? |
#28
|
||||
|
||||
Цитата:
2. Лучше оформить так: Код:
output=exp(input2*ln(input)); 3. Странно. |
#29
|
||||
|
||||
Цитата:
А про процедуру без ввода параметров не понял. Если процедура не использует эти параметры, то зачем они нужны? А если использует, то как она будет работать без них? Это как сложить два числа, не зная, чему они равны. Конечно, вызвать процедуру без параметров можно, только после этого (после возврата из процедуры) программа поведет себя случайным образом (скорее всего будет не выровнен стек, как следствие будет AV или что-то в этом роде). Если параметры не нужны - значит их надо убрать из определения процедуры. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 08.09.2012 в 19:07. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
UnrealFire (08.09.2012)
|
#30
|
||||
|
||||
а как пауер работает, не понял по английски.
сори, перепутал я нужно так Код:
output:=input; |