Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
Pcrepair ©   (2012-07-18 21:23) [0]

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

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
Вопрос: правильно ли пробовать каскадно подключать функцию на функцию, или надо функции обработки строк объединить в одну?


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

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


 
Pcrepair ©   (2012-07-18 21:49) [2]

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


 
Anatoly Podgoretsky ©   (2012-07-18 21:49) [3]

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

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


 
Pcrepair ©   (2012-07-18 21:54) [4]

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


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


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

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


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


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

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


 
Pcrepair ©   (2012-07-19 08:11) [7]

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


 
Inovet ©   (2012-07-19 08:57) [8]

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

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


 
Pcrepair ©   (2012-07-19 14:08) [9]

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

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


 
Inovet ©   (2012-07-19 14:50) [10]

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

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

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



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

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.134 c
15-1335247067
99999
2012-04-24 09:57
2013.03.22
Проверить синтаксис.


15-1346016093
Artem
2012-08-27 01:21
2013.03.22
Не поможете с Visual C++?


15-1353318107
ЕщеОдинКакжеНадоели
2012-11-19 13:41
2013.03.22
CheckListBox с 2 чекерами.


15-1342072358
AV
2012-07-12 09:52
2013.03.22
Эффективность подразделения в компании


2-1343366420
EgorovAlex
2012-07-27 09:20
2013.03.22
Хранение данных в dll, используемой несколькими процессами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский