Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Delphi,Описание процедуры
Показать сообщение отдельно

Старожил


Сообщения: 225
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата:
я понял товарищу нужна перегрузка...
он придет и скажет нам, что ему из вышесказанного нужно...
Ну блин
Вообще я попробовал и overload и как Васкетсов сказал, для меня более удобной кажется перегрузка и для решения моей задачи она более всего подходит. Хотя и при том и при другом способе можно не задавать какие-то переменные (о чем я и спрашивал)

Код: Выделить весь код
procedure summm2(var m:real; a,b,c:integer; d:integer=0; f:integer=0);
...
procedure Tform1.summm2(var m:real; a,b,c,d,f:integer);
 *begin
 * *m:=(a+b+c+d)*f;
 *end;
Дело в том что если не указать переменную f, то она примет значение равное нулю и при любых значениях a,b,c,d ответ будет ноль, что может быть не всегда правильно, учесть этот недостаток можно с помощью перезагрузки, проще говоря пищется несколько процедур с одинаковым именем, но с разным содержанием, а какая будет выполняться определяется по заданным параметрам, и если я допустим f же не задам то я могу выполнять другое арифметическое действие, которое описанно в соответствующей процедуре.

Код: Выделить весь код
procedure summm(a,b,c:integer; var m:integer); overload;
 *private
 * *{ Private declarations }
 * *procedure summm(a,b:integer; var m:integer); overload;
...

impletation
{$R *.DFM}

procedure tform1.summm(a,b:integer; var m:integer);
 *begin
 * *m:=a+b;
 *end;
procedure tform1.summm(a,b,c:integer; var m:integer);
 *begin
 * *m:=a+b+c;
 *end;

procedure TForm1.Button1Click(Sender: TObject);
 * *var q:integer;
begin
 *summm(5,5,5,q); *{q=15}
 *summm(5,5,q); *{q=10}
end;
Арифметическое действие не такое как в первом куске кода, но как действует будет думаю понятно, задал три переменных он складывает три переменные, задал две переменные он складывает две переменные (две, а не две и плюс к ним же ноль, что принципиально отличается от метода где не используется перегрузка)

Хотя здесь тоже есть свое недостатки, допустим у меня есть процедура, выходными данными которыми является несколько переменных (a,b,c) если мне нужно чтобы присутствовала только одна переменная допустим "с", "b" или "a", то тут может появиться проблема, как указать так чтобы находилась именно нужная мне Короче говоря в некоторых случаях проще не париться а написать еще одну процедуру просто с другим именем и все, проще говоря каждому самому решать каким путем идти
ну блин

[s]Исправлено: Roman Go, 17:57 21-02-2003[/s]

-------
Нет такой плохой ситуации, которая не могла бы стать еще хуже.


Отправлено: 17:55, 21-02-2003 | #9

Название темы: Delphi,Описание процедуры