Текущий архив: 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.49 MB
Время: 0.013 c