Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Объясните как написать функцию с возвратом ? [D7]


Страницы:   1 2

XTD ©   (2006-06-02 15:23:00) 

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

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

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

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


Loginov Dmitry   (2006-06-02 18:59:00) [1]

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


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


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

Согласен


evvcom   (2006-06-02 16:34:00) [3]


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

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


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

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


XTD   (2006-06-02 15:45:00) [5]

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


Kolan   (2006-06-02 15:39:00) [6]


> 'TForm1.FaileNameTime'

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


DiamondShark   (2006-06-02 15:37:00) [7]

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


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


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


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


Kolan   (2006-06-02 15:36:00) [9]


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

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


XTD   (2006-06-02 15:34:00) [10]

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


DiamondShark   (2006-06-02 15:32:00) [11]


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

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


XTD   (2006-06-02 15:31:00) [12]

в type


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

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


XTD   (2006-06-02 15:30:00) [14]

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


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


> function mmy( vars:string):string;

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


Kolan   (2006-06-02 15:29:00) [16]


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

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

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

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


XTD   (2006-06-02 15:28:00) [17]

Constant object cannot be passed as var parameter


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

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

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


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

function mmy( consts:string):string;


Kolan   (2006-06-02 15:27:00) [20]


> Result := s+" 1";

Result := s+' 1';


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо