Правильный вызов Delphi
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Правильный вызов Delphi - 2009-01-04 14:41:11.123333
|
|
|
Kerny
Сообщений: 41
Оценки: 0
Присоединился: 2008-12-11 15:39:17.436666
|
Такой вопросик:
procedure idert(i:integer;var s:string);
var
result:string;
//локальные переменные
begin
//код программы
result:=s;
end;
{вызов процедуры по нажатию кнопки}
procedure TForm1.Button2Click(Sender: TObject);
var
t:integer;
j:string;
begin
idert(t,j);
label1.caption:=j;
end;
Получится что после выполнения кода в поле label1 будет значения переменной j. а как сделать, так что бы можно было вызвать процедуру так
procedure idert(i:integer);
var
//локальные переменные
begin
//код программы, в результате значение будет строковым
end;
{вызов процедуры по нажатию кнопки}
procedure TForm1.Button2Click(Sender: TObject);
var
t:integer; // параметра значение, которого передаем процедуре.
begin
t:=1+1;
label1.caption:=dert(t); // функция возвращает результат своего выполнения в поле label.
end;
Надеюсь нормально обьяснил.
|
|
|
RE: Правильный вызов Delphi - 2009-01-04 15:53:26.576666
|
|
|
VENOM4X
Сообщений: 246
Оценки: 0
Присоединился: 2008-02-18 22:49:08.960000
|
вообще-то есть стандартная функция StrToInt. напиши так label1.caption:=StrToInt(t);
|
|
|
RE: Правильный вызов Delphi - 2009-01-04 15:56:37.013333
|
|
|
Kerny
Сообщений: 41
Оценки: 0
Присоединился: 2008-12-11 15:39:17.436666
|
я знаю, что есть - но дело не в этом - мне просто нужно знать, как таким образом организовать вызов процедуры. чтобы она именно так вернула значение.
|
|
|
RE: Правильный вызов Delphi - 2009-01-04 16:00:25.743333
|
|
|
VENOM4X
Сообщений: 246
Оценки: 0
Присоединился: 2008-02-18 22:49:08.960000
|
тогда тебе надо писать не процедуру, а функцию. В том-то и разница, что процедура не возвращает значение, а функция возвращает. Вот так надо было бы написать функцию: function idert(i:integer) : string; var //локальные переменные begin //код программы, в результате значение будет строковым result:=IntToStr(i);//<– здесь мы возвращаем значение end;
|
|
|
RE: Правильный вызов Delphi - 2009-01-04 16:03:39.360000
|
|
|
Kerny
Сообщений: 41
Оценки: 0
Присоединился: 2008-12-11 15:39:17.436666
|
Спасибо - попробую!
|
|
|
RE: Правильный вызов Delphi - 2009-01-04 17:12:16.790000
|
|
|
Kerny
Сообщений: 41
Оценки: 0
Присоединился: 2008-12-11 15:39:17.436666
|
А можно использовать переменную не result, а какую нить другую.
|
|
|
RE: Правильный вызов Delphi - 2009-01-04 17:18:10.373333
|
|
|
VENOM4X
Сообщений: 246
Оценки: 0
Присоединился: 2008-02-18 22:49:08.960000
|
Нет, для возвращения инфы из функции, ты должен использовать result (или передавать переменную по ссылке). При этом ты result не объявляешь - своя скрытая result есть в каждой функции. P.S. Почитай что-нибудь по Delphi.
|
|
|
RE: Правильный вызов Delphi - 2009-01-05 11:11:48.110000
|
|
|
Alex1001222
Сообщений: 13
Оценки: 0
Присоединился: 2009-01-03 19:42:44.476666
|
Kerny
procedure TForm1.Button2Click(Sender: TObject);
var
t : real;
begin
t := 1+1;
label1.caption := FloatToStr(t);
end;
Попробуй вот так, должно работать. И используй real, т.к. String не поддерживает дробные числа. Тогда перевод в строку будет FloatToStr(t), а перевод в числа будет StrToFloat(t), где t - переменная с типом real
|
|
|
RE: Правильный вызов Delphi - 2009-01-07 13:46:53.346666
|
|
|
Kerny
Сообщений: 41
Оценки: 0
Присоединился: 2008-12-11 15:39:17.436666
|
Да суть не в том была….. но все равно всем спасибо за помощь.
|
|
|
RE: Правильный вызов Delphi - 2009-01-07 15:06:49.426666
|
|
|
fleisch
Сообщений: 35
Оценки: 0
Присоединился: 2009-01-06 18:17:17.283333
|
На сколько я помню, в теле функции должна присутствовать строка присвоения функции какого-то значения… Или для Delphi это не катит???
|
|
|
RE: Правильный вызов Delphi - 2009-01-07 15:14:18.470000
|
|
|
QunneD
Сообщений: 833
Оценки: 0
Присоединился: 2008-11-09 20:54:38.113333
|
Вот как создаеться простая правильная функция. function easy_func(a : boolean):boolean; begin if (a = true) then result := true else if (a = false) then result := false; end; Result возвращает из функции результат, и как правило ее надо обязательно использовать. Это процедуру можно использовать без Result.
|
|
|
|
|