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

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

Правильный код функции с idHTTP


Pcrepair ©   (2012-08-02 20:15:00) 

Добрый день. Есть две версии кода:
(*================ВЕРСИЯ1====================*)
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo2.Text:=LoadPage(Edit1.Text, idHttpLoad);
end;

function TForm1.LoadPage(const S:string; idHttp: TidHttp):string;
begin
   idHttpLoad := TIdHTTP.Create(nil);
  try
    LoadPage := W1252To1251(AnsiLowerCase(idHttpLoad.Get(S)));
    LoadPage := (AnsiLowerCase(idHttpLoad.Get(S)));
  finally
     idHttpLoad.Free;
  end;
end;

(*================ВЕРСИЯ2====================*)
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo2.Text:=LoadPage(Edit1.Text);
end;

function TForm1.LoadPage(const S:string):string;
begin
   idHttpLoad := TIdHTTP.Create(nil);
  try
    LoadPage := W1252To1251(AnsiLowerCase(idHttpLoad.Get(S)));
    LoadPage := (AnsiLowerCase(idHttpLoad.Get(S)));
  finally
     idHttpLoad.Free;
  end;
end;

Разница между ними только в упоминании idHttpLoad в параметрах функции, но работают обе версии
Вопрос: зачем нужно idHttpLoad в параметрах функции?


avil   (2012-08-28 19:23:00) [1]

Если idHTTP описан где-то в переменных класса tForm1, то вызов равнозначен. Но разница в том, что первый вариант функции LoadPage более самостоятельный, и "TForm1." перед названием можно спокойно убирать, когда второй вариант строго привязан к своему классу (если же, конечно, IdHTTP - не глобальная переменная).


Дмитрий С   (2012-08-15 19:06:00) [2]


> W1252To1251

Любопытно что делает эта функция.


> Вопрос: зачем нужно idHttpLoad в параметрах функции?

а спросить того кто их написал нельзя?


Оно   (2012-08-06 18:51:00) [3]

Удалено модератором


Rouse_   (2012-08-02 21:27:00) [4]


> если не создавать клиент при использовании функции, то как
> тогда устанавливать для клиента свойства и методы?

Ну где-то его создавать же нужно, логично? Вот там где ты его создашь, там и назначай свои параметры.


Pcrepair   (2012-08-02 21:23:00) [5]

кстати, если не создавать клиент при использовании функции, то как тогда устанавливать для клиента свойства и методы? типа:
idHttpLoad.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1'
и прочие, если вдруг нужно будет?


Pcrepair   (2012-08-02 21:15:00) [6]

будут работать, если версия автоопределения кодировки с MLANG не окажется лучше чем SetCodePage. не надо спешить


Rouse_   (2012-08-02 21:00:00) [7]


> а что в функции не надо создавать и уничтожать клиент?

Если ты его создаешь извне и передаешь параметром, нафига?


> вызовы не лишние один работает с 1251 другой с 1252

Где работают? Второй перезатирает результат вызова первого.


Pcrepair   (2012-08-02 20:34:00) [8]

а что в функции не надо создавать и уничтожать клиент?

вызовы не лишние один работает с 1251 другой с 1252, просто нет пока кода автопереключения кодировки


Плохиш   (2012-08-02 20:34:00) [9]


> какой-то из этих двух вызовов лишний:

Какой, какой, вестимо первый, оно же пишет - " работают обе версии".


Rouse_   (2012-08-02 20:20:00) [10]

разница в том что первая не правильно написана. Должно быть примерно так:

function TForm1.LoadPage(const S:string; idHttp: TidHttp):string;
begin
 LoadPage := W1252To1251(AnsiLowerCase(idHttp.Get(S)));
end;


да и вторая не очень, какой-то из этих двух вызовов лишний:

   LoadPage := W1252To1251(AnsiLowerCase(idHttpLoad.Get(S)));
   LoadPage := (AnsiLowerCase(idHttpLoad.Get(S)));


Наверх

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