Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

Объясните как написать функцию с возвратом ?   Найти похожие ветки 

 
XTD ©   (2006-06-02 15:23) [0]

Передаю из процедуры в функцию параметры, в функции должно посчитать и вернуть результат в туже процедуру.

function mmy(var s:string):string;
begin
Result := s+" 1";
end;

procedure my;
begin
ShowMessege(mmy("1"));
end;

Должно вывести 1+1 а ругается.


 
XTD ©   (2006-06-02 15:25) [1]

Что нетак ?


 
DiamondShark ©   (2006-06-02 15:26) [2]

а как ругается?


 
Kolan ©   (2006-06-02 15:27) [3]


> Result := s+" 1";

Result := s+" 1";


 
Dmitrij_K   (2006-06-02 15:27) [4]

function mmy(const s:string):string;


 
Dmitrij_K   (2006-06-02 15:28) [5]

function mmy(const s:string):string;
begin
Result := s+"+1";
end;

procedure my;
begin
ShowMessege(mmy("1"));
end;


 
XTD ©   (2006-06-02 15:28) [6]

Constant object cannot be passed as var parameter


 
Kolan ©   (2006-06-02 15:29) [7]


> Должно вывести 1+1 а ругается.

Твое выведет "11"

function TForm1.AddStrings(S: string): string;
begin
 Result := S + "1";
end;

procedure TForm1.ShowString;
begin
 ShowMessage(AddStrings("1+"));
end;


 
Kolan ©   (2006-06-02 15:30) [8]


> function mmy(var s:string):string;

var ненужно т.к. ты не изменяешь передаваемую строку...


 
XTD ©   (2006-06-02 15:30) [9]

Теперь так: Unsatisfied forward or external declaration: "TForm1.FaileNameTime"


 
Asail   (2006-06-02 15:31) [10]

Просто поменяй function mmy(var s:string):string;
на function mmy(s:string):string;


 
XTD ©   (2006-06-02 15:31) [11]

в type


 
DiamondShark ©   (2006-06-02 15:32) [12]


> Теперь так: Unsatisfied forward or external declaration:
>  "TForm1.FaileNameTime"

Это в другую ветку.


 
XTD ©   (2006-06-02 15:34) [13]

А тут можно ответить ?


 
Kolan ©   (2006-06-02 15:36) [14]


>
> function AddStrings(S: string): string;
> begin
>  Result := S + "1";
> end;
>
> procedure ShowString;
> begin
>  ShowMessage(AddStrings("1+"));
> end;
>

Вот так работает ? :)


 
Сергей М. ©   (2006-06-02 15:37) [15]


> XTD ©   (02.06.06 15:34) [13]


А перевести и осознать не пробовал ?


 
DiamondShark ©   (2006-06-02 15:37) [16]

Можно.
TForm1.FaileNameTime описана в заголовке, но отсутствует в реализации.
Но это не имеет ни малейшего отношения к исходному вопросу.


 
Kolan ©   (2006-06-02 15:39) [17]


> "TForm1.FaileNameTime"

А еще один способ лесенияч стать на клсс и нажать Ctrl+Shift+C :)


 
XTD ©   (2006-06-02 15:45) [18]

DiamondShark , так что делать ?


 
Asail   (2006-06-02 15:52) [19]

Описать TForm1.FaileNameTime в разделе implementation


 
evvcom ©   (2006-06-02 16:34) [20]


> Просто поменяй function mmy(var s:string):string;
> на function mmy(s:string):string;

уже раньше указали на что поменять, т.е. на
function mmy(const s:string):string;
а без const компилятор сгенерит не нужный для данного случая код, копирующий переданную строку в стек. А это как минимум неоптимально.


 
Asail   (2006-06-02 17:13) [21]

Согласен


 
Loginov Dmitry ©   (2006-06-02 18:59) [22]

evvcom ©   (02.06.06 16:34) [20]
а без const компилятор сгенерит не нужный для данного случая код, копирующий переданную строку в стек. А это как минимум неоптимально.


1) Строки String к стеку никакого отношения не имеют.
2) Никакого копирования строки не произойдет, так как в самой функции она не модифицируется.



Страницы: 1 вся ветка

Текущий архив: 2006.06.18;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.071 c
15-1147987692
TDelphiWebScript
2006-05-19 01:28
2006.06.18
[DelphiWebScript] Как изменять размер динамических массивов ?


1-1147337555
aleks_z
2006-05-11 12:52
2006.06.18
Глючит TChart


11-1128773253
homm
2005-10-08 16:07
2006.06.18
WM_DISPLAYCHANGE


15-1148392394
oldman
2006-05-23 17:53
2006.06.18
Как быть в случае отсутствия 8w???


15-1148799853
Ega23
2006-05-28 11:04
2006.06.18
С Днём рождения! 27 мая