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

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

Передача данных через параметры от функции к функции


Pcrepair ©   (2012-07-18 21:23:00) 

Добрый день. Есть такой код:

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   Button1: TButton;
   Edit1: TEdit;
   Label1: TLabel;
   idHttpLoad: TIdHTTP;
   IdAntiFreeze1: TIdAntiFreeze;
   procedure Button1Click(Sender: TObject);
   function LoadSearchPage(const S:string):string; (*загрузка страницы*)
   function DelUselessUrls(const S:string):string; (*удаление ссылок на закачку файлов*)
   function DeleteRootUrls(var S:string):string; (*удаление УРЛ ведущих на основную страницу сайта*)
   function GetURLs(const Data:string):string; (*выделение из кода страницы строк с УРЛ*)

................
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Request,Ans1,Ans2:string;
begin
  Request:=Edit1.Text; (*ввод данных*)  
  Ans1:=GetURLs(LoadSearchPage(Request)); (*вывод и обработка результата*)
  Ans2:=DelUselessUrls(DeleteRootUrls(Ans1)); (*дополнительная обработка результа*)
  Memo1.Text:=Ans2;
end;


В общем все работает, но если попробовать сделать так

Memo1.Text:=DelUselessUrls(DeleteRootUrls(GetURLs(LoadSearchPage(Request)) ));

выскакивает ошибка при компиляции: E2197 Constant object cannot be passed as var parameter
Вопрос: правильно ли пробовать каскадно подключать функцию на функцию, или надо функции обработки строк объединить в одну?


Inovet   (2012-07-19 14:50:00) [1]

> [9] Pcrepair ©   (19.07.12 14:08)
> не хочешь делиться опытом - че ты тут забыл?

Тебя забыл спросить. Не опытом, а основами из букваря, который тебе лень читать. А было бы быстрее.

По сабжу. Вполне нормальная практика, технически ограничений нет. Если много параметров и/или таких вложенных вызовов, читаемость отчасти можно повысить форматированием текста. Всё в предалах здравого смысла, конечно.


Pcrepair   (2012-07-19 14:08:00) [2]

да да подай в ОНН заяву - запретить интернет форумы и прочее, пусть каждый сам свою цивилизацию с нуля создает

не хочешь делиться опытом - че ты тут забыл?


Inovet   (2012-07-19 08:57:00) [3]

> [7] Pcrepair ©   (19.07.12 08:11)
> да ничего ужастного. не замечу - спрошу

Идиотский подход. Вместо того, чтобы самому разобраться, ходить с протянутой рукой и кляньчить.


Pcrepair   (2012-07-19 08:11:00) [4]

да ничего ужастного. не замечу - спрошу


Германн   (2012-07-19 02:03:00) [5]


> Pcrepair ©   (18.07.12 21:49) [2]
>
> не заметил видимо

Естественно. Следствие бездумного+неграмотного использования/передирания чужого кода. И много ещё чего не заметишь.


Юрий Зотов   (2012-07-18 21:57:00) [6]


> Pcrepair ©   (18.07.12 21:49) [2]
> это вообще правильно? функцию на функцию громоздить?

Если читабельность кода не сильно страдает, то нормально.


Pcrepair   (2012-07-18 21:54:00) [7]

как всегда толян ты не успел а значит опоздал
без тебя, самага умнага разобрались


Pcrepair   (2012-07-18 21:49:00) [8]

не заметил видимо, и да, после замены на КОНСТ компиляция в норме
тем не менее, это вообще правильно? функцию на функцию громоздить?


Anatoly Podgoretsky   (2012-07-18 21:49:00) [9]

> Pcrepair  (18.07.2012 21:23:00)  [0]

Как всегда ни справку, ни книг не читаем, и со здравым смыслом не дружим.
Зачем объявлял var, а передаешь константное выражение, к какой переменной
прикажешь обращаться?


Омлет   (2012-07-18 21:35:00) [10]

А зачем у тебя в DeleteRootUrls var-параметр, если ты всё равно возвращаешь результат через Result?


Наверх

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