![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() В чем различие между Процедурой и функцией.Что когда используют?
|
#2
|
||||
|
||||
![]() Цитата:
|
#3
|
|||
|
|||
![]() Меня интересует ,как читается эта строка else if not Provinputint(key) then key:=chr(0); и за как осуществляется работа функции в If.
Я просто немного алгоритм этот понять не могу Код:
function Provinputint (ch:char):boolean; begin If (ch>='0') and (ch<='9') or (ch=#13) or (ch=#8) then Provinputint:=True else Provinputint:=false; end; procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then edt2.SetFocus else if not Provinputint(key) then key:=chr(0); end; procedure TForm1.edt2KeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then btn1.SetFocus else if not Provinputint(Key) then key:=chr(0); end; procedure TForm1.btn1Click(Sender: TObject); var n,m:Integer; coch:longint; function fact(k:integer):longint; var i:Integer; res:longint; begin if k=0 then fact:=1 else begin res:=1; for i:=1 to k do res:=res*i; fact:=res; end; end; begin if (edt1.Text='') or (edt2.Text='') then ShowMessage('Введены не все данные') else begin n:=StrToInt(edt1.Text); m:=StrToInt(edt2.text); coch:=fact(n) div (fact(m)*fact(n-m)); lbl1.caption:='Число сочетаний = '+ FloatToStr(coch); end; end; end. |
#4
|
|||
|
|||
![]() А чего тут понимать. Функция возвращает некоторый результат. Т.е. если тебе не надо сохранять это значение, то ты можншь просто использовать его в условии.
|
#5
|
|||
|
|||
![]() Спасибо.Как я понимаю отличие функции от процедуры это то ,что процедура может вывести более 1 значения,а функция только 1 ?
Но я все равно понять не могу ,что означает эта строка else if not Provinputint(key) then key:=chr(0); И за счет чего функция не дает писать буквы?Ведь там же не написано ,что если функция False ,то не пишем символ ,а если True,то пишем .Там просто присваивание и все. |
#6
|
|||
|
|||
![]() Процедура вообще ничего не возвращает. Она что-то делает.
else if not Provinputint(key) then key:=chr(0); означает, что если кнопка-цифра или энтер, то отобразить ее в edit-е. В других случаях она становится нулем. Последний раз редактировалось kalinochkind, 20.11.2010 в 21:18. |
#7
|
||||
|
||||
![]() Цитата:
|
#8
|
||||
|
||||
![]() Функция ProvInputInt сделана для проверки ввода. Т.е. если переданный в эту функция параметр ch является цифрой, символом табуляции (Tab) или символом перевода каретки (Enter) тогда функция вернет значение Истина иначе Ложь
Можно несколько оптимизировать код этой функции так: Код:
function Provinputint (ch:char):boolean; begin Provinputint := ch in ['0'..'9',#8,#13]; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |