![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |